防止表单在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; }, ...