【问题标题】:How to disable and enable client validation in Razor using JQuery/Javascript如何使用 JQuery/Javascript 在 Razor 中禁用和启用客户端验证
【发布时间】:2014-11-28 10:06:37
【问题描述】:

我通过禁用 data-val 属性禁用了我的 razor 文件中某个字段的客户端验证。该字段如下所示

  @Html.TextAreaFor(model => model.CallNoteViewModel.CallNote_Memo, 3, 15, 
                      new { @class = "form-control", **@data_val = "false"** })

我想根据复选框是否被勾选来启用/禁用对该字段的验证。我的 JQuery 代码如下。

       $('#checkbox').click(function () {
            if ($('#checkbox').prop('checked')) 
            {
                $('#CallNoteViewModel_CallNote_Memo').data('val', 'true');
                console.log($('#CallNoteViewModel_CallNote_Memo').data('val'));
            } 
            else
            {
                $('#CallNoteViewModel_CallNote_Memo').data('val', 'false');
                console.log($('#CallNoteViewModel_CallNote_Memo').data('val'));
            }
        });

我尝试通过在 jQuery 中使用 attr() 函数来设置 data-val 属性,但即使这样也启用了客户端验证。

如何为 jQuery 中的字段启用客户端验证?

【问题讨论】:

  • 第一次加载页面时会解析验证器。如果您更改 data-val-* 属性,则必须删除并重新解析验证器。
  • 处理此问题的更好方法是使用自定义验证属性。 Foolproof 具有许多有用的属性,例如 [RequiredIfTrue],可能适合您的需求
  • 谢谢斯蒂芬。我使用了 Foolprood,这正是我正在寻找的东西。解决了我的问题。

标签: javascript jquery asp.net-mvc razor asp.net-mvc-5


【解决方案1】:

我假设您正在使用不显眼的表单验证。

$(function() {
if($('#' + checkboxId).is(":checked"))
{
    var config = $.data($('form')[0], 'validator').settings;
    config.ignore = ".disableValidation";
}
});

使用上述代码禁用对您选择的字段的验证。只需将类“.disableValidation”添加到要禁用验证的字段中。表单中这些字段的验证将被禁用。

【讨论】:

  • 验证将不会仅通过动态添加类来禁用。 validator 在页面首次加载时被解析。它只会在第一次加载页面时忽略类名存在的字段
【解决方案2】:

我按照 Stephen Muecke 的建议使用了 FoolProof 库。它非常适合我的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2016-01-30
    • 2012-07-25
    • 2018-02-21
    • 2021-06-04
    • 1970-01-01
    相关资源
    最近更新 更多