form.on('submit') 不会在 form.submit() 之前触发

form.on('submit') does not trigger after form.submit() but before

我有一个表单提交触发器和一个确认引导框,它显示在单击表单提交按钮上。在 bootbox 中确认如果用户同意我提交表单。我的问题是 onsubmit 在用户说是之前触发,并且当我在 bootbox 中调用 form.submit() 时不再触发。

<html>
  <form>
    <!-- something here -->
    <button type="submit"></button>
  </form>
</html>
<script>
form.on('submit', function(){
  //do something here (I)
}
form.validate({
  submitHandler: function (form) {
      finalConfirm(form); (II)
  }
});
function finalConfirm(form){
  confirm('message', function (confirmed) {
    if(confirmed) form.submit() (III)
  })
}
</script>

我希望 //do something here (I)if(confirmed) form.submit() (III) 之后执行,或者至少在之前和之后执行,但它只在它之前执行(如我在代码中所示)

form 元素(DOM 元素,而不是 jQuery 包装器)上直接 调用 submit 不会触发 submit 个处理程序。验证插件传递你的 submitHandler 的参数是 DOM 元素,而不是它的 jQuery 包装器(根据 this documentation)。

form 元素的 jQuery 包装器上调用 submit 触发 submit 处理程序(至少,附有 jQuery 的)。因此,如果您希望 finalConfirm 中的 form.submit() 触发您的提交处理程序,请为其创建一个 jQuery 包装器:

$(form).submit();

(在那里,或在 submitHandler 将其传递给 finalConfirm 之前。)

只要确保您不会陷入无限循环即可。 :-)