デフォルトでは、テキスト入力の場合、jQuery Validate は "blur" (onfocusout:
)、"keyup" (onkeyup:
)、および "submit" (onsubmit:
) イベントでトリガーされます。
「blur」と「submit」のフィールドのみを検証するには、単にonkeyup:
オプションを false に設定します...
$(document).ready(function() {
$('#myform').validate({
onkeyup: false, // to use onkeyup, remove this line
// other rules and options
});
});
すべてのバージョンは同じように動作します...
動作デモ (v1.10): http://jsfiddle.net/M2MLL/
動作デモ (v1.9): http://jsfiddle.net/KSgLb/
動作デモ (v1.8): http://jsfiddle.net/k87Lp/
のデフォルトの動作では、フィールドに何かが残った後 (または最初の送信イベントの後onfocusout
)にのみフィールドの検証が開始されます。それ以外の場合は、フィールドを空のままにして新しいフィールドをクリックしても何も起こりません。
毎回「ぼかし」で検証を行いたい場合は、何があっても、onfocusout:
このようにコールバック関数を変更するだけです...
$(document).ready(function() {
$('#myform').validate({
onfocusout: function(element, event) {
this.element(element);
},
onkeyup: false,
// other rules and options
});
});
動作デモ (v1.9): http://jsfiddle.net/eRNTu/
バージョン 1.10 も動作: http://jsfiddle.net/Mev8v/
ところで:私は でこれを行いませんが.blur()
、元のコードは v1.9 と v1.10 で正常に動作していました。 ただし、プラグインのonfocusout:
オプションの内部機能を活用することは、目標を達成するためのより確実な方法であると考えています。
編集2:
OPの最後の説明に応えて:
「最初のエントリでは、ぼかしがかかるまでアクティブな検証はありませんが、フィールドがエラー状態になると、フィールドは変更、キーアップなどでアクティブに検証する必要があります。」
これは、デフォルトのコールバック関数を変更する新しい動作デモですonkeyup:
onkeyup: function (element, event) {
if (event.which === 9 && this.elementValue(element) === '') {
return;
} else if (element.name in this.submitted ) {
this.element(element);
}
},
フィールドは、最初またはエラーが表示されていない場合、検証を無視します。onkeyup
アクティブなエラーが発生し、ユーザーがフィールドに戻った場合にのみ、onkeyup
検証が開始されます。
実際のデモ: http://jsfiddle.net/6s4rj/