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

时间:2014-04-06 06:08:52

标签: jquery validation submit

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

$('#formButton').click(function(e) {
  $('#form').submit();
)};

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

  var validate= $('#form').validate({
    "rules": {
      "name": {
         "required": true
      }
    }
  });

这就是我想要做的,但就像我说.submit()函数在我使用.valiate()函数后什么都不做:

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

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

为什么.submit()函数在我使用.validate()后停止提交的任何建议?

1 个答案:

答案 0 :(得分:7)

当您提交表单时调用validate方法时,

submit方法会阻止validate事件的默认操作。如果要在表单字段有效时提交表单,则应在传递的对象上为submitHandler方法定义validate函数:

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

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

$('#form').get(0).submit();