2

フォームを送信する前に、すべてのフィールドが検証されていることを確認しようとしています。どこから始めればいいのかもよくわかりません。すべてのフィールドが正常に検証されるまで、送信ボタンをグレー表示にするか無効にしたいと思います。

スクリプトは次のとおりです。

$('document').ready(function(){
$('form').validate({
    rules: {
       a: {required:true, minlength:2},
       b: {required:true}
    },      
    messages: {
       a: {required: "enter your name!"},
       b: {required: "enter the date!"}                        
    },
    errorPlacement: function(error, element) {
    if(element.attr('name') == 'a'){
         $('#name').html(error);                
     }
     if(element.attr('name') == 'b'){
         $('#date').html(error);                
     }
    },
    success: function(label){
        label.addClass("valid").text("Ok!");                  
    },
    debug:true
});
$('#a').blur(function(){
    $("form").validate().element("#a");
});
});

html は次のとおりです。

<form action="#" id='commentForm'>
    <input type="text" name="a" id="a">
    <input type="text" name="b" id="b">
    <button type="submit">Validate!</button>
<div id="date" style="border:1px solid blue;"></div>
<div id="name" style="border:1px solid red;"></div>
</form>

そして、ここにjsfiddleがあります:

http://jsfiddle.net/wQxQ8/12/

事前にたくさんありがとう!

4

1 に答える 1

1

冗長かどうかは議論せずに(この方法で2倍明確になるので、個人的には好きです)

  • デフォルトでボタンを無効にする
  • 入力ぼかしごとに、フォームが有効かどうかを確認します。
  • 有効になっている場合は、ボタンを有効にします。

    $('input').blur(function(){
        var thisform = $('form');
        if (thisform.valid()) {
            thisform.find("button").prop("disabled", false)
        }
     });
    

フィドル: http://jsfiddle.net/wQxQ8/17/

また、blur を onkeyup に変更して、キーストロークごとに検証することもできます。ただし、検証する入力が多数ある場合は、パフォーマンスが低下する可能性があります。

于 2012-12-13T22:32:17.380 に答える