13

我正在生成页面上的元素列表,它们都附加了验证器。当我查看 HTML 源代码时,我看到如下内容:

<input type="text" id="email" name="email" data-val-required="No valid email address!" data-val="true">

我需要一种方法来动态启用/禁用此类元素的验证。我尝试data-val通过将属性设置为false然后返回来启用/禁用该属性true。但它似乎没有对此做出回应;验证总是存在的!

有谁知道如何动态启用/禁用某些字段的验证器?

4

4 回答 4

52

我实际上找到了一个更适合我需求的解决方案。我可以执行以下操作:

$(function() {
    var settngs = $.data($('form')[0], 'validator').settings;
    settngs.ignore = ".ignore";
});

有了它,我可以通过在元素中添加或删除类名来“切换”我想要的任何ignore元素。

于 2012-08-29T13:43:03.033 回答
16

我认为这会有所帮助。

<div class="editor-field">
       @{ Html.EnableClientValidation(false); }
       @Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" })
       @{ Html.EnableClientValidation(true); }
</div>
于 2014-11-03T15:16:27.557 回答
1

我会再添加一个选项,而不会覆盖不显眼的验证器默认值。由于特定元素的验证由data-val属性控制,您可以将其设置为data-val="false".

因此,对于 Razor 助手,请使用:

@Html.TextBoxFor(model => Model.DateOfBirth, new { @class = "form-control", data_val = false })

对于新的 .net 核心语法,请使用:

<input asp-for="DateOfBirth" class="form-control" data-val="false">
于 2021-06-18T07:54:52.707 回答
0

这对我来说效果更好:

$('#Reference').rules('add', 'required');
$('#Reference').rules('add', 'remove');
$('#Reference').rules('add', { minlength: 2 });
于 2019-11-05T18:09:42.877 回答