2013-07-24 6 views
5

フォームにjQueryの検証を使用していますが、フォームの検証時にページを再読み込みまたは送信してそのアクションを停止します。私はすでにevent.preventDefault()を使用していますが、動作しません。 、私はあなたがjQuery停止フォームの検証submit

$('#form').on('submit', function() { 
    // check validation 
    if (some_value != "valid") { 
     return false; 
    } 
}); 

あなたはe.preventDefault();return false;文を必要としない求めて何をすべて私のJSの検証のために、この基本構造を、使用

$("#step1form").validate(); 
$("#step1form").on("submit", function(e){ 
    var isValid = $("#step1form").valid(); 

    if(isValid){ 
     e.preventDefault(); 
     // Things i would like to do after validation 
     $(".first_step_form").fadeOut(); 
     if(counter == 3){ 
      $(".second_step_summary").fadeIn(); 
      $(".third_step_form").fadeIn(); 
      $(".third_inactive").fadeOut(); 
     }else if(counter < 3){ 
      $(".second_step_form").fadeIn(); 
      $(".third_inactive").fadeIn(); 
     } 

     $(".first_step_summary").fadeIn(); 
     $(".second_inactive").fadeOut(); 
    } 

    return false; 
}); 
+1

あなたのコードを置き換えることができます。これは、フォームが有効なときにのみ実行される 'if'ステートメントの内部にあります。 – Archer

+0

はとにかく動作しません – monk

+0

フォームは有効ですが、それは間違った場所にあります。 – Archer

答えて

8

submitHandlerは、プラグインに組み込まれたコールバック関数です。

submitHandler(デフォルト:ネイティブ形式提出):フォームが有効であるとき、実際には提出し処理するための

コールバック。唯一の引数としてフォームを にします。デフォルトのsubmitを置き換えます。 Ajaxを介してフォームを提出する場所は、検証後です。

submitHandlerが自動的に有効なフォームの送信ボタンのみ火災のクリックをキャプチャしているので、あなたは別のハンドラを提出し、また、フォームをテストするためにvalid()を使用する必要があります必要はありません。あなたは `e.preventDefault()`で間違った場所を持っている

$("#step1form").validate({ 
    submitHandler: function(form) { 
     // Things I would like to do after validation 
     $(".first_step_form").fadeOut(); 
     if(counter == 3){ 
      $(".second_step_summary").fadeIn(); 
      $(".third_step_form").fadeIn(); 
      $(".third_inactive").fadeOut(); 
     }else if(counter < 3){ 
      $(".second_step_form").fadeIn(); 
      $(".third_inactive").fadeIn(); 
     } 
     $(".first_step_summary").fadeIn(); 
     $(".second_inactive").fadeOut(); 
     return false; // block the default submit action 
    } 
}); 
+0

送信するアクションURLを指定する場所は? –

+0

@coding_idiot、彼は 'preventDefault()'を使用したいので、OPは 'submitHandler'の中でAjaxの送信を行っていると仮定しています。 'submitHandler'関数がなければ、'

'要素のデフォルトの' action'が起動します。 – Sparky

+0

ありがとう、それは動作します。しかし残念なことに、私はフィールドに 'dot'という名前を付けました。ここで私の質問を参照してください - http://stackoverflow.com/questions/20219923/how-to-validate-input-fields-with-a-dot-in-name-using-the-jquery-validation-plug/20220457? noredirect = 1#20220457 –

3

は、ここに私のコードです彼らは同じことをする。

+1

正確ではありません。 jQueryイベントハンドラで 'return false'を返す=' e.preventDefault() 'と' e.stopPropagation() ' –

+0

これは、組み込みの検証を使用していない人にとっては役に立ちます –

0

このプラグインは、有効なフォーム送信と無効なフォーム送信のためのコールバックを提供します。 submitHandlerコールバックを指定すると、フォームは自動的にサーバーに送信されません。

$("#step1form").validate({ 
    submitHandler : function() 
    { 
     // the form is valid 
     $(".first_step_form").fadeOut(); 
     if(counter == 3){ 
      $(".second_step_summary").fadeIn(); 
      // etc 
     } 
    } 
}); 
関連する問題