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

Car*_*ven 29 javascript validation jquery

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

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

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

但是,问题是submitHandler即使我return false;在处理函数的最后一行有一个语句,也提交表单 .我想要阻止默认行为并停止提交表单,因为我已经通过ajax提交了.

在通过submitHandler函数中的ajax代码后,如何阻止代码提交?

Zol*_*tan 51

我是这样做的,它完全按照你希望的方式工作:

$("#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.
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是一篇旧帖子,但如果有人遇到同样的问题,他们应该输入 event.preventDefauld() 代替。e 是事件的快捷方式。如果你想让 e 工作,把 e 放在函数括号之间,就像这个函数(e)。 (2认同)
  • 嗯, e 并不是真正的快捷方式,它是提交表单时调用的匿名函数的参数。如果您收到 ReferenceError: e 错误消息,那么您一定在这一行中输入了拼写错误: $("#myform").submit(function(e) { (2认同)

小智 31

$("#myform").validate({
   rules: {...},
   submitHandler: function(form, event) { 
      event.preventDefault();
      alert("Do some stuff...");
      //submit via ajax
   }
});
Run Code Online (Sandbox Code Playgroud)

希望这有帮助.

  • 挂钩版本1.12.0的源代码,很明显配置`submitHandler`将自动阻止默认行为.另外,如@ user3157665所示,处理程序的签名是`submitHandler(form,event)`(文档与源代码不同步). (3认同)