使用e.preventDefault()提交表单

时间:2016-02-10 10:30:02

标签: javascript jquery forms

我如何继续提交使用e.preventDefault()的jQuery拦截的表单?如果我只是致电$(form).submit(),显然不会提交。下面是我当前脚本的一个示例。

$(form).submit(function (e) {
    e.preventDefault();

    // Code...

    if (true) {
        $(form).submit();
    } else {
        // Code...
    }
});

2 个答案:

答案 0 :(得分:5)

因为您通过调用jQuery submit方法导致对事件处理程序的递归调用(jQuery submit方法将再次调用处理程序,其中调用了prevent default,从而阻止了默认操作),相反,您只需调用form元素的submit方法,以便不再调用事件处理程序

$(form).submit(function(e) {
  e.preventDefault();
  var self = this;

  // Code...

  if (true) {
    self.submit();
  } else {
    // Code...
  }
});

答案 1 :(得分:3)

改为调用原生DOM方法:

form.submit();

这不会触发与jQuery方法绑定的submit事件。