2

検証1.8では、すべてのフォームの入力要素で$ .blur関数を使用して、ユーザーがタブアウトしたときにそのフィールドで検証をトリガーしました。

$('#myform :input').blur(function() {
    $("#myform").validate().element( this );
});

これはうまくいきました。ただし、1.9に更新したところ、フィールドがぼかしではなくキーアップで検証されています。

セットアップでは何も変更せず、1.9に切り替えただけです。

多くの変更があったようですが、追加のドキュメントはありません。

どんな助けでもいただければ幸いです。

明確化

以前は、要素は最初はぼかしで検証されていましたが、要素がエラー状態の場合、ユーザーが変更を加えるために戻った場合、要素はキーアップなどでアクティブに検証されていました。これが私の望ましい行動です。最初のエントリでは、ぼかしが発生するまでアクティブな検証はありませんが、フィールドがエラー状態になると、フィールドは変更やキーアップなどでアクティブに検証する必要があります。

これで、要素は最初のエントリのキーアップで検証されます

4

1 に答える 1

10

デフォルトでは、テキスト入力の場合、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/

于 2013-01-26T14:58:06.933 に答える