2013-05-24 15 views
5

妥協のない検証は、はありません。はフォームがユーザによって提出されるまでフォームの検証を行います。フォーム上で何かが無効であれば、各フィールドはユーザーが変更した時点でただちに検証されます。私が何をしたいかフォームがすでに送信されている場合のみ、jQueryフォームの検証をトリガーしますか?

は「控えめ」フォーム要素上のトリガの検証である - ユーザーが既にフォームを送信しようとした場合つまり、のみは、フォーム要素を検証します。だから私はそうのように(特定のチェックボックスが変更されたとき、私はそれを行う)要素の検証をトリガすることができます。

$('#chkNoPersonId').change(function(){ 
    $('#lstPersonId').valid(); 
}); 

しかし、トラブルが検証されることになる常に原因lstPersonIdとエラーがときに表示ということです無効、ユーザーがまだフォームを提出していない場合でも。ユーザーがフォームを送信しようとしたら、それを検証するだけです。ユーザーがフォームをまだ送信しようとしているかどうか、またはこの動作を達成できる他の方法があるかどうかを確認できる値がありますか?

+1

私はあなたの質問の権利を得ることはありませんaltough私は推測してみてください。このように使用できるsubmit()イベントハンドラがあります: $( '#myForm')submit(function(){ //フォームが提出された後は何もしないでください }); – thpl

答えて

5

が既にクリックされたりされていない提出してください。 例:フラグが真であるかないと、あなたの検証ロジックを実行し、入力チェック天候の各検証よりも

$('#submitButn').click(function(){ 
    $(this).attr('data-submitted','true'); 
}); 

。クリアまたはフォームのリセット時に

$('#chkNoPersonId').change(function(){ 
    if($('#submitButn').attr('data-submitted')=='true'){ 
    $('#lstPersonId').valid(); 
    } 
}); 

あなたは、その属性を削除することができます

$('#submitButn').removeAttr('data-submitted'); 
+2

私は実際にフォームが提出されたときを覚えておくために、 'attr'の代わりにjQueryの' data'機能( 'submit '、true)'を使用しました。ありがとう。 – Jez

1

submitイベントハンドラを使用してみましたか?

$("form").submit(function() { 
    //validate here 
}); 

ソース:あなたは、フォームを識別するためにボタンを提出の上にフラグを追加することができます http://api.jquery.com/submit/

関連する問題