2012-05-29 9 views
25

に提出からフォームを防ぎます。 は、私は次のコードを持っている:は、私は、AJAXを介して行わその検証と提出プロセスの後に提出からフォームを防ぎたい、私は<a href="http://docs.jquery.com/Plugins/Validation/validate" rel="noreferrer">http://docs.jquery.com/Plugins/Validation/validate</a></p> <p>で検証プラグインでjQueryのを使用していますjQueryの検証プラグインのsubmitHandler機能

$("#myform").validate({ 
    rules: {...}, 
    submitHandler: function(form) { 
     alert("Do some stuff..."); 
     //submit via ajax 
     return false; //This doesn't prevent the form from submitting. 
    } 
}); 

をしかし、これに伴う問題はsubmitHandlerは、私は処理関数の最後の行でreturn false;文を持っているにもかかわらず、フォームを送信していることです。私は既定の動作を防止し、私が既にajaxを介して提出しているので、フォームが送信されないようにしたい。

submitHandler機能のajaxコードを通過した後にコードの送信を停止する方法を教えてください。

答えて

38

私はこのようにそれを行うとどのようにそれが正確に動作しますそれが仕事をしたい:

$("#myform").submit(function(e) { 
    e.preventDefault(); 
}).validate({ 
    rules: {...}, 
    submitHandler: function(form) { 
     alert("Do some stuff..."); 
     //submit via ajax 
     return false; //This doesn't prevent the form from submitting. 
    } 
}); 
+0

これはまさにこのようなことです。 ReferenceError:eは定義されていません e.preventDefault(); –

+0

私はReferenceErrorも得ます:eは定義されていませんe.preventDefault();これは何を意味するのでしょうか? – Damainman

+0

これは古い投稿ですが、同じ問題が発生した場合は、代わりにevent.preventDefauld()を入力する必要があります。 eはイベントのショートカットです。 eを動作させたい場合は、この関数(e)のように関数ブラケットの間にeを入れます。 – thar

1

あなたはsubmitイベントにevent.preventDefault()を呼び出すことができます:あなたはjQueryのWalidate」を経由して、非常に簡単な方法でこれをコーディングすることができ

if($("#myform").valid()){ 
    alert("Do some stuff..."); 
} 
+0

submitHandler関数がイベントパラメーターを受け取っていないようです。 – Carven

+0

@xEnOnはい、そういうわけで、フォームに 'submit'イベントを別に追加するのです。 – VisioN

2

たぶん、あなたは送信ボタンを使用せずに外部から検証することができます" http://jquery.dop-trois.org/walidate/

ここでは、送信時に実行される関数をコーディングすることができます。 ドキュメントでコールバックを探します。

1

$("#myform").on("submit", function(event) { 
    event.preventDefault(); 
}); 
0

残念ながら、呼び出しようだ:唯一の解決策は、このようなreturn false声明であると思われるので、submitHandler: function(form){は、イベント引数を取りません。

... 
submitHandler: function(form) { 
    //your code 
    return false; 
}, 
... 
20
$("#myform").validate({ 
    rules: {...}, 
    submitHandler: function(form, event) { 
     event.preventDefault(); 
     alert("Do some stuff..."); 
     //submit via ajax 
    } 
}); 

は、このヘルプを願っています。

+1

'event.preventDefault()'が何をするのかを質問する人に説明し、なぜそれが動作するのか(あるいはそれを参照するのか) –

+3

バージョン1.12.0のソースコードに繋がっていると、 'submitHandler 'はデフォルトの動作を自動的に防止します。また、@ user3157665で示されるように、ハンドラの署名は 'submitHandler(form、event)'です(ドキュメンテーションはソースコードと同期していません)。 – Younes

関連する問題