jquery – 在第一个多个表单提交处理程序中返回false

前端之家收集整理的这篇文章主要介绍了jquery – 在第一个多个表单提交处理程序中返回false前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个提交处理程序,一个验证一个表单,一个提交表单:
// validates the form but does not submit it
$("form").submit(function() {
  // perform validation here and set "validationFails" appropriately
  // ...
  if (validationFails) {
    return false;
  }
});

// submits the form via ajax
$("form").submit(function(event) {
  event.preventDefault();
  // submit the form via ajax here
  // ...
});

如果验证失败,似乎不能通过ajax提交表单,因为使用return false,因此链中的后续提交处理程序不应被调用.但是,即使验证失败,表单也是通过ajax提交的.为什么?

解决方法

从事件处理程序返回false相当于调用event.preventDefault()和 event.stopPropagation(),也就是阻止事件发生的默认操作,并阻止事件冒泡起来.它不会阻止运行中相同元素的其他处理程序.

您需要调用event.stopImmediatePropagation() method – 停止绑定到相同元素的其他处理程序运行,并指出处理程序将以与它们绑定的相同顺序运行,因此(显然)必须首先绑定验证处理程序.

$("form").submit(function(event) {
  // perform validation here and set "validationFails" appropriately
  // ...
  if (validationFails) {
      event.stopImmediatePropagation();
      return false;
  }
});
原文链接:https://www.f2er.com/jquery/175687.html

猜你在找的jQuery相关文章