2011-08-04 7 views
1

私が書いたこの検証作業は動作しますが、何らかの理由で2回クリックしてフォームを送信する必要があります。何か案は?jquery .submit()validate problem

 $('#signup').submit(function() { 
     console.log('Clicked'); 
    $('#signup').validate({ 
      rules: { 
    FNAME: { 
     required: true, 
     notPlaceholder: true 
    }, 
    email: { 
     required: true, 
     notPlaceholder: true, 
     email: true 
    } 
}, 
     errorLabelContainer: "div.error", 
     submitHandler: function(form) { 
      $.colorbox({width:"300px", href:'thankyou.html'}); 
      $('#signup').fadeOut(); 
     } 
    }); 
    return false; 
}); 

おかげ

+0

が不思議ですが... – Robert

+1

$( '#signup')。validate呼び出しを送信ハンドラの外に移動し、document.readyハンドラに配置します。 – Chandu

+0

イム....そう.....愚かな.......ありがとう – Robert

答えて

5

あなた$('#signup').validateコールは、ユーザーがフォームを送信しようとする最初まで接続されていないバリデータを意味$('#signup').submit、内部です。 Cyber​​nateがコメントで指摘したように、submitコールの前にvalidateコールを移動すると、まずバリデーターが添付されます。

少し混乱します。 validate実際にははすぐに実行するのではなく、の検証を設定します。

検証がvalidateを使用して設定されたら、あなたは実際にこのように見えるためにあなたのsubmit呼び出しに変更することができます:あなたはそれを最初にクリックしたときにコンソールログが何かを出力するので

$('#signup').submit(function() { 
    return $('#signup').valid(); 
}); 
+0

ありがとうございます。 – Robert