2012-08-29 108 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

好的答案可能會有所不同,具體取決於用戶的問題 –

相關問題