0

これは私が知っている本当に基本的なことですが、onblur または入力中に検証するフォーム要素を取得しようとしています。物事を正しく機能させるのに本当に苦労しています。

$('document').ready(function(){
    $('form').validate({
       rules: {
                a: {
                    onkeyup:true,
                    required:true,
                    minlength:2
                   }
        },      
        messages: {
                a: {
                    required: "enter your name!"
                   }       
        }  

    }); 
 });

部分的に機能させることはできます...しかし、何かを入力した後、入力をクリックして入力する必要があります。どうしてこれなの?次にこれを追加しました

    $('#a').blur(function(){
        $("form").validate().element("#a");
    });

onblur で動作しますが、戻って有効なエントリを入力しても、エラー メッセージは消えません。html は次のとおりです。

<div>
<form action="#">
    <input type="text" name="a" id="a">
</form>
</div>

フィドルは次のとおりです。

http://jsfiddle.net/mmw562/S7AKK/16/

http://jsfiddle.net/mmw562/S7AKK/17/

誰かが何が起こっているのか説明できますか? これがかなり基本的なことだとわかっていても、あなたの助けに感謝します....

4

1 に答える 1

2

ドキュメントによると、onkeyup:.validate()オプションであり、フィールド検証規則ではありません。それに応じて配置する必要があります...

$('document').ready(function(){
    $('form').validate({

    // "onkeyup" is the default behavior, leave it out unless disabling
    // onkeyup: false,  

       rules: {
            a: {
                required:true,
                minlength:2
            }
        },      
        messages: {
            a: {
                required: "enter your name!"
            }       
        }  

    }); 
});

編集:

onkeyup:はデフォルトの動作であるため、デフォルトの動作としてそのままにしておきます。に設定するとtrue、冗長になるだけでなく、実際に意図した機能が損なわれます。

無効にする必要がある場合は、次のように設定しfalseます。

onkeyup: false

のデフォルトの動作を変更する必要がある場合はonkeyup、次の関数を使用します。

onkeyup: function(element, event) {
   // your custom onkeyup functionality
}

純粋に参考までに、これがデフォルトonkeyup:関数の動作です。

onkeyup: function(element, event) {
    if ( event.which === 9 && this.elementValue(element) === '' ) {
        return;
    } else if ( element.name in this.submitted || element === this.lastActive ) {
        this.element(element);
    }
}
于 2012-11-23T03:41:54.703 に答える