如何在场模糊上验证整个表单,而不仅仅是模糊字段

时间:2017-11-13 17:30:54

标签: javascript jquery jquery-validate

我有一个使用jQuery验证的表单,使用不显眼的验证来声明规则。目前我正在使用默认提交行为,其中在提交表单之前没有模糊验证(验证表单中的每个字段),之后后续模糊仅验证模糊字段。

我想更改此行为,以便在提交后,模糊单个字段会重新验证整个表单,以便错误摘要保留在屏幕上,直到每个问题都得到解决。提交前的行为应保持不变。

我已经尝试了基于其他SO答案的以下onfocusout方法,但没有运气:

onfocusout: function(element, event) {
    $(element).valid();
}

onfocusout: function(element, event) {
    this.element(element);
}

1 个答案:

答案 0 :(得分:1)

this.element(element)$(element).valid()都用于触发单个元素的验证。在您的情况下,由于您尝试在.validate().setDefaults()方法的选项中应用此方法,因此您无法使用.valid(),因为它可能会触发无限递归。

离开.element()。但是,as per the docs,您只能在单个字段上使用它,而不是整个表单。

  

如何在字段模糊上验证整个表单,而不仅仅是模糊字段   
  我想改变这种行为......模糊单个字段会重新验证整个表单

解决方案是编写附加到所有相关输入元素的外部blur事件处理程序,并触发附加到表单的.valid()方法。编辑此通用示例中的选择器,以适用于您的特定表单。

$('#myform input[type="text"]').on('blur', function() {
    $('#myform').valid();  // <- trigger validation on entire form
});
  • $('#myform input[type="text"]')选择#myform

  • 中的所有文字输入
  • $('#myform') selects the形式based on = ID&#34; myForm的&#34;`