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

在Razor Web应用中,能否通过文本框验证成功修改另一文本框的值?

实现Razor表单验证通过后的联动操作

你需要在客户端监听foo字段的验证状态,当它通过范围验证时,自动更新被禁用的foofoo输入框的值。这里我们可以借助ASP.NET MVC默认集成的jQuery Validate插件来实现实时监听,具体步骤如下:

1. 修改表单字段标记

先给foo和foofoo的输入框加上明确的ID,方便后续JS精准定位:

<div class="form-group">
    @Html.LabelFor(model => model.foo, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.foo, new { htmlAttributes = new { @class = "form-control", id = "foo-input" } })
        @Html.ValidationMessageFor(model => model.foo, "", new { @class = "text-danger" })
    </div>
</div>

<div class="form-group">
    @Html.LabelFor(model => model.foofoo, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.foofoo, new { htmlAttributes = new { disabled = "disabled", @class = "form-control", id = "foofoo-input" } })
        <!-- 可选:添加隐藏字段,让禁用的foofoo值能被服务器端接收 -->
        @Html.HiddenFor(model => model.foofoo, new { id = "foofoo-hidden" })
    </div>
</div>

2. 添加客户端脚本监听验证状态

在页面的@section Scripts块(或者页面底部)添加以下jQuery代码,实时监听foo的验证状态并执行对应操作:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
    <script>
        $(function() {
            // 监听foo输入框的输入、失去焦点事件,触发验证
            $('#foo-input').on('input blur', function() {
                const $fooInput = $(this);
                // 手动触发当前字段的验证
                $fooInput.valid();

                // 检查字段是否通过所有验证(包括你的范围验证)
                if ($fooInput.hasClass('valid')) {
                    // 验证通过时更新foofoo的值,这里可以自定义逻辑
                    const fooValue = parseInt($fooInput.val());
                    const targetValue = fooValue * 0.1; // 示例:设置为foo值的10%
                    $('#foofoo-input').val(targetValue);
                    // 如果加了隐藏字段,同步更新它的值,保证服务器能获取到
                    $('#foofoo-hidden').val(targetValue);
                } else {
                    // 验证不通过时可以清空foofoo,可选操作
                    $('#foofoo-input').val('');
                    $('#foofoo-hidden').val('');
                }
            });
        });
    </script>
}

补充说明

  • 上面的代码是实时反馈,用户输入或离开foo输入框时就会触发验证和更新,体验更流畅;如果只需要在表单提交前执行,也可以监听表单的submit事件。
  • 确保页面已经加载了jQuery和jQuery Validate脚本,@Scripts.Render("~/bundles/jqueryval")会自动加载这些资源,默认MVC项目已经配置好。
  • 因为禁用的输入框不会提交值,所以添加隐藏字段是为了让服务器端能接收到foofoo的更新后的值,如果不需要服务器处理这个值,可以省略隐藏字段。

内容的提问来源于stack exchange,提问作者newbie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:46:17