使用jQuery非干扰性验证禁用元素验证

使用jQuery非干扰性验证禁用元素验证,jquery,unobtrusive-validation,Jquery,Unobtrusive Validation,我在一个页面上生成一个元素列表,它们都附带了验证器。当我查看HTML源代码时,我看到如下内容: 我需要一种动态启用/禁用此类元素验证的方法。我试图通过将data val属性设置为false然后返回到true来启用/禁用该属性。但它似乎对此没有反应;验证总是在那里 有人知道我如何在某些字段上动态启用/禁用验证器吗?我实际上找到了一个更适合我需要的解决方案。我可以做到以下几点: $(function() { var settngs = $.data($('form')[0], 'vali

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


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


有人知道我如何在某些字段上动态启用/禁用验证器吗?

我实际上找到了一个更适合我需要的解决方案。我可以做到以下几点:

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

这样,我就可以通过添加或删除元素中的类名来“切换”我想要的任何元素。

我认为这会有所帮助

<div class="editor-field">
       @{ Html.EnableClientValidation(false); }
       @Html.TextBoxFor(m => m.BatchId, new { @class = "k-textbox" })
       @{ Html.EnableClientValidation(true); }
</div>

@{Html.EnableClientValidation(false);}
@Html.TextBoxFor(m=>m.BatchId,新的{@class=“k-textbox”})
@{Html.EnableClientValidation(true);}

这对我来说效果更好:

$('#Reference').rules('add', 'required');
$('#Reference').rules('add', 'remove');
$('#Reference').rules('add', { minlength: 2 });

请注意,要保留默认的jquery验证行为,您应该将
settings.ignore=“:hidden,.ignore”
个人而言,我更喜欢添加
:disabled
alsoSource:不为我禁用它。在某些情况下不起作用。所以我必须深入研究源代码并找到100%有效的解决方案:
$(“表单”).each(函数(){
if(data&&data.settings){
data.settings.ignore='.ign';
data.settings.onclick=void(0)
data.settings.onfocusin=void(0);
data.settings.onfocusout=void(0);
data.settings.onkeyup=void(0);
data.settings.onsubmit=void(0)
对于那些想要禁用表单中所有元素的验证的人:只需编写
settngs.ignore=“*”之所以有效,是因为
*
是匹配所有元素的通用选择器。这应该是公认的答案!比前一年多2年other@JavierIEH这个答案可能比较新,可能对您有用,但它只在页面呈现时有效。任何想要在动态客户端启用/禁用验证器的人仍然需要使用前面的答案。答案可能会根据用户的问题而有所不同。我认为这里的关键是知道Html是什么。当页面呈现时,EnableClientValidation(false)实际以Html输出。好的,那么在mvc4中尝试一下,它不仅不起作用,而且没有向输入字段添加任何附加属性。