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



我有一个使用jQuery验证的表单,使用不引人注目的验证来声明规则。目前,我使用的是默认的提交行为,在提交表单之前,不验证模糊(验证表单中的每个字段),然后模糊只验证模糊的字段。

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

我在其他SO答案的基础上尝试了以下onfocusout方法,但没有成功:

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

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

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

剩下.element()。然而,根据文档,你只能在一个字段上使用它,而不能在整个表单上使用

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

解决方案是编写一个附加到所有相关输入元素的外部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 onid="myform"`

最新更新