2012-08-29 107 views
11

通过某种形式生成器,页面上呈现元素列表,并且它们都对它们进行验证。当我看到在HTML源代码,我看到这样的事情:使用jQuery禁用对元素的验证不显眼验证

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

我需要以某种方式有一个动态的方式来启用/禁用验证这样的元素。我试图启用/禁用data-val属性,将它设置为false,然后回到true。但它似乎没有回应。验证总是在那里!

任何人都有任何想法如何我可以启用/禁用某些领域的验证动态的方式?

回答

37

我居然找到了符合我的需求,更好的解决方案。我能做到以下几点:

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

有了这样我可以“切换”,我想通过添加或从一个元素移除类名ignore任何元素。

+1

真的很好的解决方案! :) –

+7

请注意,要保持默认的jQuery验证行为,你应该把'settings.ignore =“:hidden,.ignore”'我个人更喜欢加':disabled'也 –

+1

来源:http://weblogs.asp.net /imranbaloch/archive/2011/07/13/overriding-unobtrusive-client-side-validation-settings-in-asp-net-mvc-3.aspx – WolfyUK

13

我认为这会有所帮助。

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

这应该是被接受的答案!比另一个近2年 – JavierIEH

+0

@JavierIEH这个答案可能更新,并且可能适用于您,但它只适用于页面呈现时间。任何想要在飞行客户端启用/禁用验证器的人都需要使用先前的答案。 – mikeschuld

+0

好的答案可能会有所不同,具体取决于用户的问题 –

相关问题