防止表单在jQuery Validate插件的submitHandler函数中提交

我在http://docs.jquery.com/Plugins/Validation/validate上使用jQuery和validate插件

我希望阻止表单在通过ajax完成validation和提交过程后提交。 我有以下代码:

$("#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提交表单return false; 处理函数最后一行的语句。 我希望阻止默认行为并停止提交表单,因为我已经通过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..."); } 

您可以在submit事件上调用event.preventDefault()

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

您可以通过“jQuery Walidate”以非常简单的方式对此进行编码。 http://jquery.dop-trois.org/walidate/

在那里你可以编写一个函数,它将在提交时执行。 在文档中查找回调。

不幸的是,似乎调用: submitHandler: function(form){不接受事件参数所以似乎唯一的解决方案是return false语句,如下所示:

 ... submitHandler: function(form) { //your code return false; }, ...