form:submit 无法通过 return false 防止默认

form:submit unable to prevent default with return false

我想用 parsley.js 验证表单,然后通过 jQuery.post 提交,这需要阻止默认表单提交,但它没有按预期工作。

对于form:submitdocs说:

Triggered when after a form validation succeeds and before the form is actually submitted. Return false to interrupt submission.

但是,我无法让它工作...以下代码更新 #alert 元素,然后通过默认浏览器级别请求提交表单。 $.post 调用似乎没有被执行。无论如何服务器都没有收到它。

$('.contact-form form').parsley().on('form:submit', function() {
  $('#alert')
    .text('Sending...')
  $.post({
    url: '/contact',
    data: form.serialize(),
    success: function() {
      $('#alert')
        .text('Message successfully sent.')
    },
    error: function() {
      $('#alert')
        .removeClass('alert-success')
        .addClass('alert-danger')
        .text([
          'Sorry, a server error has occurred. ',
          'Your message was not sent.'
        ].join())
    }
  })
  return false
})

以下按预期工作,执行验证但未提交表单

$('.contact-form form').parsley().on('form:submit', function() {
  return false
}

我已经尝试过类似的方法但无济于事:

$('.contact-form form').parsley().on('form:submit', function(formInstance) {
  formInstance.submitEvent.preventDefault()
}

所以我很难过...

此问题与 Preventing form submission after validation by parsley.js 不同,后者涉及将 jQuery 的 submit 方法绑定到 input 元素而不是 form

return false 之前的代码中一定有错误中断了函数,因此永远无法正确到达 return?