使用jQuery .validate()验证表单后,jQuery .submit()无法正常工作

3

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

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

当我添加表单验证器后,它不再提交任何内容(什么也不做):
  var validate= $('#form').validate({
    "rules": {
      "name": {
         "required": true
      }
    }
  });

这是我想要做的事情,但是当我使用.validate()函数时,.submit()函数不起作用:
$('#formButton').click(function(e) {
  if (validate.form() === false) {
    e.preventDefault();
  } else {
    $('#form').submit();
  }
)};

我不能使用Ajax代替.submit(),因为我有一些输入框的类型是“文件”,据我所知我不能对这种输入框类型使用.serialize()。

请问为什么使用.validate()函数后.submit()函数停止提交了呢?


可能是重复的问题:jQuery验证 - 能工作,但无法“提交” - mplungjan
1个回答

7

validate方法可以阻止默认的提交行为,当你提交表单时,validate方法会被调用。如果你想在表单字段有效时提交表单,你应该在传递给validate方法的对象上定义一个submitHandler函数:

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

由于form参数是一个原始的DOM元素,调用它的submit方法不会调用validate方法。如果您不想定义所提到的方法,可以使用.get()方法获取原始的DOM元素并调用其submit方法:

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

这是一个常见问题解答。+1 但实际上它是一个巨大的重复。 - mplungjan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接