【问题标题】:jQuery .submit() doesn't work after i use jquery .validate() on a form我在表单上使用 jquery .validate() 后 jQuery .submit() 不起作用
【发布时间】:2014-05-18 09:46:11
【问题描述】:

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

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

当我添加一个表单验证器时,它不再提交任何东西(不做任何事情):

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

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

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

我不能使用 ajax 代替 .submit(),因为我有一些输入类型为“文件”,据我所知,我不能 .serialize() 用于此类输入类型。

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

【问题讨论】:

标签: jquery validation submit


【解决方案1】:

validate 方法阻止submit 事件的默认操作,当您提交表单时调用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 但实际上它是一个巨大的重复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-21
相关资源
最近更新 更多