2011-08-02 8 views
0

投稿時にJquery validationn pluginに隠しフィールドの検証を行わないようにしようとしています。たとえば、私たちは、このようにHTMLを持っている場合:その後、Jqueryバリデータと隠されたフィールド

<div id="1"> 
    <input type="text" class="digits"> 
</div> 
<div id="2"> 
    <input type="text" class="digits"> 
</div> 

およびコール:

$('div#2').hide(); 

と第2の入力は、いくつかの誤ったデータがフォームがまだ提出してください入力されていたとしても、フォームを送信します。私はバリデーションのコードを変更したいのですが、関連するフラグメントを見つけることができませんでした。

+0

私は要素のクラスを設定することによって検証が行われると思いますか?あなたは要素を隠すときにクラスを削除できますか? – Michel

+0

@Michelクラスを指定する必要がありますが、それらを削除するのはちょっとしたアドホックな解決策のようです。 '$( 'div#2')。show();'を使って再び表示された場合、それらを検証したいので、クラスをコードにハードコードするか、どこかに格納しようとします。私は、バリデータを隠しフィールドをスキップさせるほうが簡単だと感じています。 – mck

+0

あなたが隠れているときにクラスを削除したくない場合は、表示するときにクラスを追加すると、私はあなたのポイントを取得します。私はより多くを検索します – Michel

答えて

3

フィールドから検証を削除する最も簡単な方法は、disabled属性をフィールドに追加することです。

var $div2 = $('div#2'); 
$div2.hide(); 

$('input, select, textarea', $div2).attr('disabled', 'disabled'); 

これらは検証されません。しかし、これにより、無効化されたフィールドはサーバー上に送信されません。これらの手動で隠されたフィールドがサーバー上で送信される必要がない場合、テクニックは良いです。

もう1つの方法は、remove rulesadd rulesの機能を使用して、要素からすべての検証ルールを手動で追加して削除することです。これはもちろん、入力ごとに各ルールを1つずつ追加したり削除したりする必要があるため、より複雑になります。

+0

私は多くの要素が現れて消えていくフォームがあります。彼がドロップダウンメニューから特定のものを選択すると、私はフォーム全体が消えるようにしたい、彼は別のセクションを選択すると、このセクションが表示されます。私はそれがすべてのテキスト入力フィールドであるため、非表示にすることはできません。 – mck

+0

私の更新された回答を見てください – archil

関連する問題