You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击按钮禁用表单输入后,如何恢复文本框为绑定原始值?

解决方案:禁用表单时恢复输入框原始值

问题核心在于你仅维护了当前绑定的输入值,没有保存初始的原始状态副本,导致禁用时无法回滚到初始值。以下是具体实现方案:

完整代码实现

Razor 前端部分

<form id="formexample">
    <div class="row g-5">
        <div class="col">
            <h5><strong>Informations</strong></h5>
            <br />
            <!-- 切换禁用状态的按钮 -->
            <button type="button" class="btn btn-secondary mb-3" @onclick="ToggleDisable">
                @(isDisabled ? "启用表单" : "禁用表单并恢复原始值")
            </button>
            
            <label class="form-label" for="">Sample Value</label>
            <input type="text" class="form-control" disabled="@isDisabled"
                   @bind="@binded_value" placeholder="" style="margin-bottom:1rem">
            
            <label for="exampleFormControlTextarea1">Remarks on the tool concept</label>
            <input type="text" class="form-control" disabled="@isDisabled"
                   @bind="@second_binded_value" placeholder="" style="margin-bottom:1rem">
        </div>
    </div>
</form>

C# 逻辑部分

@code {
    // 当前绑定的输入值
    private string binded_value { get; set; } = "初始Sample值";
    private string second_binded_value { get; set; } = "初始Remarks值";
    
    // 存储原始值的副本,用于恢复
    private string original_binded_value { get; set; }
    private string original_second_binded_value { get; set; }
    
    private bool isDisabled { get; set; }

    protected override void OnInitialized()
    {
        // 组件初始化时保存初始原始值
        original_binded_value = binded_value;
        original_second_binded_value = second_binded_value;
    }

    // 切换禁用状态的方法
    private void ToggleDisable()
    {
        isDisabled = !isDisabled;
        
        // 禁用时将当前值重置为原始值
        if (isDisabled)
        {
            binded_value = original_binded_value;
            second_binded_value = original_second_binded_value;
        }
    }
}

关键说明

  1. 保存原始值副本:新增original_前缀的变量,在组件初始化时记录输入框的初始值,确保禁用时能找到原始状态。
  2. 移除冗余事件:删除了原代码中的@oninput事件,因为@bind已经实现了双向绑定,手动写@oninput会造成重复赋值,完全多余。
  3. 禁用时重置值:在切换禁用状态的方法中,判断如果是禁用操作,就把当前绑定值替换为原始值,输入框会自动同步显示原始内容。

额外注意事项

  • 如果原始值是通过组件参数传入的,需要在OnParametersSet方法中更新原始值,确保参数变化时原始状态同步更新:
    protected override void OnParametersSet()
    {
        original_binded_value = binded_value;
        original_second_binded_value = second_binded_value;
    }
    
  • 若需要支持多次编辑-恢复操作,仅在初始化或参数更新时更新原始值,启用表单时无需修改原始值。

内容的提问来源于stack exchange,提问作者C. Oezer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:05:24