我有一个使用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 on
id="myform"`