コメントに従って編集し、OPを編集しました:
「後で表示される要素 (つまり
、新しいフォーム) に jquery validate をアタッチする最もスマートな方法は何ですか?」
まったく新しいフォームの作成/読み込みについて話している場合、AFAIK、これが唯一の方法です....validate()
新しいフォームを読み込み/作成した直後に呼び出します...
$('#my_NEW_form').validate({
// your options
});
すべてのフォームが同じオプションを共有している場合は、setDefaults
メソッドを一度使用して、何度も宣言することを避けることもできます...
$.validator.setDefaults({
// your repeated options
});
参照: http://docs.jquery.com/Plugins/Validation/Validator/setDefaults#defaults
編集2:
「.on
何らかの方法で使用できますか?メソッド「on」が「イベント」を新しい要素にバインドできる場合、検証全体を適用できないのはなぜですか?」
events
プラグインではなく binding に使用され、....validate()
はイベントではないためです。 jQuery.on()
は、 newが動的に作成されるときに、 afunction
を anに自動的にバインドするために使用されます。event
element
繰り返しますが、質問の目的を説明したことはありません...なぜこれをしたいのですか? コードを保存するには?
開始点に戻ります...コールバック関数$('#newform').validate({/*options*/})
内で呼び出すだけでajax
success
、他の場所に配置する必要があるコードとまったく同じ量のコードが必要になります。
元の答えは次のとおりです。初期化に関する一般的な情報の一部が.validate()
まだ適用されるため、そのままにしておきます。
あなたの質問は基本的に「動的に追加されたフィールド入力にルールを適用するにはどうすればよいですか?」ということだと思います。
「後で現れる要素にjquery validateをアタッチする最もスマートな方法は何ですか」
rules('add')
ルールを動的に適用するためのプラグインの組み込みメソッドを使用する。
「各 AJAX 呼び出しの .success() ハンドラーで jquery validate を再度呼び出すよりも良い方法はありますか?」
実際に.validate()
再度電話するべきではありません。フォームのプラグインを初期化するために一度.validate()
呼び出され、再度呼び出してもルールは変更されません。そのための方法があります。
ajax
success
新しいフィールド要素を追加するコールバック関数内で、組み込みrules('add')
メソッドを使用します。
$('#yourfield').rules('add', {
required: true,
// other rules,
messages: { // optional
required: "your optional custom message"
}
});
.each()
一度に複数のフィールドにルールを適用する必要がある場合は、jQuery を使用してください....
デモ: http://jsfiddle.net/ucYkY/