http://docs.jquery.com/Plugins/Validation/validate の検証プラグインでjQueryを使用しています
フォームの検証と送信プロセスがajax経由で実行された後、フォームが送信されないようにします。私は次のコードを持っています:
$("#myform").validate({
rules: {...},
submitHandler: function(form) {
alert("Do some stuff...");
//submit via ajax
return false; //This doesn't prevent the form from submitting.
}
});
ただし、これに関する問題は、処理関数の最後の行にreturn false;
ステートメントがあるにもかかわらず、submitHandler
がフォームを送信することです。すでにajaxを介して送信しているため、デフォルトの動作を防ぎ、フォームの送信を停止したいです。
submitHandler
関数のajaxコードを通過した後、コードの送信を停止するにはどうすればよいですか?
私はこれを次のように行いますが、あなたが望むように正確に機能します:
$("#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.
}
});
$("#myform").validate({
rules: {...},
submitHandler: function(form, event) {
event.preventDefault();
alert("Do some stuff...");
//submit via ajax
}
});
この助けを願っています。
送信ボタンを使用せずに外部で検証できる場合があります。
if($("#myform").valid()){
alert("Do some stuff...");
}
「jQuery Walidate」を使用して、これを非常に簡単な方法でコーディングできます。 http://jquery.dop-trois.org/walidate/
ここで、送信時に実行される関数をコーディングできます。ドキュメントでコールバックを探します。
submit
イベントでevent.preventDefault()
を呼び出すことができます:
$("#myform").on("submit", function(event) {
event.preventDefault();
});
残念ながら、呼び出しsubmitHandler: function(form){
はイベント引数を受け取らないため、唯一の解決策はreturn false
次のようなステートメント:
...
submitHandler: function(form) {
//your code
return false;
},
...
働く フィドル
jqueryプラグイン検証ドキュメントによると。
submitHandler
(デフォルト:ネイティブフォーム送信)
以下のsubmitHandler
による送信メソッドは documentation から引用されていますが、動作するはずですが、実際には動作しません
フォームが有効なときに実際の送信を処理するためのコールバック。 form
とsubmit event
を唯一の引数として取得します。デフォルトの送信を置き換えます。検証後にフォームをAjax経由で送信する適切な場所。
例:有効な場合、jQuery Formプラグインを使用して、Ajax経由でフォームを送信します。
$("#myform").validate({
submitHandler: function(form,event) {
event.preventDefault();
$(form).ajaxSubmit();
}
});
私はここでコードを書いています。単にvalidayionプラグインを呼び出し、検証関数の引数にsubmitHandler
を含めないでください。
submitHandler
で送信および防止する代わりに、フォーム送信のjQueryメソッドを使用します。以下のような
$("form").validate({});
$(document).on("submit", "form", function (event) {
event.preventDefault();
alert("submit");
});
この方法で修正しました。 v1.19.0でも修正されないjQuery Validation Pluginバグのパッチ
$('#save_edit_user').on('click', function () {
var isValid = $("#edit_user").validate().form() && $("#edit_user").validate().element("#edit_user_email");
//check current ajax call by $.active
//the form is not submitted before 0 ajax is running
if (isValid && $.active == 0){
// my save logic
}
});