2012-08-29 5 views
11

一部のフォームジェネレータでは、要素のリストがページ上にレンダリングされ、すべての要素に対して検証が行われます。私はHTMLソースで見ると、私はこのような何かを参照してください。jQueryで妥当性検証を無効にする邪魔されない検証

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

を私は何とか、このような要素の検証を有効/無効にする動的な方法を持っている必要があります。私は属性を有効/無効にしようとしました。それを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

よく答えはユーザーの問題によって異なる場合があります –