在表单上使用jquery .validate()后,jQuery .submit()不起作用

use*_*929 3 validation jquery submit

我有一个触发表单提交的按钮:

$('#formButton').click(function(e) {
  $('#form').submit();
)};
Run Code Online (Sandbox Code Playgroud)

当我添加表单验证器时,它不再提交任何内容(不执行任何操作):

  var validate= $('#form').validate({
    "rules": {
      "name": {
         "required": true
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

这是我想要做的,但就像我说.submit()函数一旦我使用.valiate()函数不做任何事情:

$('#formButton').click(function(e) {
  if (validate.form() === false) {
    e.preventDefault();
  } else {
    $('#form').submit();
  }
)};
Run Code Online (Sandbox Code Playgroud)

我不能使用ajax而不是.submit()因为我有一些类型为'file'的输入,并且我理解我不能.serialize()使用这样的输入类型.

有什么建议为什么.submit()函数一旦我使用.validate()就停止提交?

und*_*ned 7

validatesubmit当您提交validate调用方法的表单时,方法会阻止事件的默认操作.如果要在表单字段有效时提交表单,则应submitHandler在传递的对象上定义一个函数validate:

$('#form').validate({
    "rules": {
      "name": {
         "required": true
      }
    },
    submitHandler: function(form) {
        form.submit();
    }
});
Run Code Online (Sandbox Code Playgroud)

由于form参数是原始DOM元素,因此调用它的submit方法不会调用该validate方法.如果您不想定义上述方法,可以使用.get()方法获取原始DOM元素并调用它的submit方法:

$('#form').get(0).submit();
Run Code Online (Sandbox Code Playgroud)