表单:提交无法阻止默认返回false

时间:2016-07-13 11:46:09

标签: javascript jquery forms parsley.js

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

form:submit的{​​{3}}说:

  

在表单验证成功之后并且在实际提交表单之前触发。返回false以中断提交。

但是,我无法使用...以下代码更新#alert元素,但随后通过默认浏览器级别请求提交表单。 $.post来电似乎无法执行..无论如何,服务器都没有收到过。{/ p>

$('.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()
}

所以我很难过......

此问题与docs不同,后者涉及将jQuery的submit方法绑定到input元素而不是form

1 个答案:

答案 0 :(得分:2)

return false之前的代码中有一个错误,它会中断函数,从而永远无法正常返回?