Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在“场模糊”(field blur)上验证整个表单,而不仅仅是在模糊的场上_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript 如何在“场模糊”(field blur)上验证整个表单,而不仅仅是在模糊的场上

Javascript 如何在“场模糊”(field blur)上验证整个表单,而不仅仅是在模糊的场上,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有一个表单,它使用jQuery验证,使用不引人注目的验证来声明规则。目前,我使用默认的提交行为,在提交表单(验证表单中的每个字段)之前,不会对模糊进行验证,之后,后续的模糊只验证模糊的字段 我想改变这种行为,这样在提交后,模糊单个字段将重新验证整个表单,这样错误摘要将保留在屏幕上,直到每个问题都得到解决。提交前的行为应保持不变 基于其他SO答案,我尝试了以下onfocusout方法,但没有成功: onfocusout: function(element, event) { $(elem

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

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

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

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

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”]”)。在('blur',function()上{

$(“#myform”).valid();/@Azim,绝对不是。
.valid()
方法不属于
.validate()
方法内部的任何地方,因为它可能会导致无限递归。通常,
.element()
.validate()内部的适当方法
…但是,在本例中,似乎无法使用此方法触发整个表单的验证。请参阅:感谢您的详细解释!由于我有超过200个不同的表单,我已覆盖了验证器的默认值
onfocusout
,只需执行
$(element.form)。valid()
如果
此.submitted
为空,则任何元素都将验证它所处的任何表单,只要表单没有初始提交。我已将相同的行为添加到默认的
onkeyup
验证消息中。只需对您的答案进行更正/添加。要验证表单,还可以使用
validator.form()
假设
validator=$(“选择器”).validate()
。请参见@Arkni,true,但是
validator.form()
方法在
.validate()
方法中使用时,也可能导致无限递归。@Sparky您能否详细说明
validator.form()
$(form).validate()的用法
会导致无限递归吗?从代码的角度来看,我看不出这怎么可能。@Arkni,因为
.validate()中有某些函数
errorPlacement
highlight
unhighlight
等在每次验证元素时都会被调用。因此,当您从这些元素中触发
.valid()
时,它会在
内部再次触发这些函数。validate
再次调用
.valid()
等等。由于开发人员以
this.element(element)
的形式提供了一种变通方法,因此您可以轻松避免这种潜在的场景。
$('#myform input[type="text"]').on('blur', function() {
    $('#myform').valid();  // <- trigger validation on entire form
});