Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 jQuery验证方法(必需:false)不工作_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript jQuery验证方法(必需:false)不工作

Javascript jQuery验证方法(必需:false)不工作,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我正在使用jQuery验证来验证我的表单字段。我有两个字段,分别是“注释”和“帐户名”。注释字段有一个验证方法,其中required设置为false。帐户名称字段有一个验证方法,其中必需设置为真。当用户单击submit按钮而不在两个字段上输入任何值时,注释字段不会以绿色突出显示,即使该字段是非必需的。为什么会这样 $(文档).ready(函数(){ $.validator.setDefaults({ 突出显示:函数(元素、errorClass、validClass){ 如果(element.t

我正在使用jQuery验证来验证我的表单字段。我有两个字段,分别是“注释”和“帐户名”。注释字段有一个验证方法,其中required设置为false。帐户名称字段有一个验证方法,其中必需设置为。当用户单击submit按钮而不在两个字段上输入任何值时,注释字段不会以绿色突出显示,即使该字段是非必需的。为什么会这样

$(文档).ready(函数(){
$.validator.setDefaults({
突出显示:函数(元素、errorClass、validClass){
如果(element.type==“无线电”){
this.findByName(element.name).addClass(errorClass).removeClass(validClass);
}否则{
$(元素)。最近('.form group')。removeClass('has-success')。addClass('has-error has feedback');
$(元素)。最近('.form group')。查找('span.glyphicon')。删除();
$(元素)。最近('.form group')。追加('');
}
},
取消高亮显示:函数(元素、errorClass、validClass){
如果(element.type==“无线电”){
this.findByName(element.name).removeClass(errorClass).addClass(validClass);
}否则{
$(元素)。最近('.form group')。removeClass('has-error有反馈')。addClass('has-success有反馈');
$(元素)。最近('.form group')。查找('span.glyphicon')。删除();
$(元素)。最近('.form group')。追加('');
}
}
});
$(“#数据表单”)。验证({
规则:{
AccountName输入:{
必填项:true
},
评论输入:{
必填项:false
}
},
submitHandler:函数(表单){
警惕(“成功”);
}
});
});

评论
帐户名

演示:

您的
commentInput
字段不是“必需的”,因此,每当该字段为空时,将完全忽略该字段进行验证

但是,只要单击submit,您就可以通过编程强制它使用
.valid()
方法进行验证

$('#saveButton').on('click', function() {
    $('#commentInput').valid();  // <- force validation test on this field
});
工作演示2:


然而,这个演示2没有意义;由于表单的验证仍然是“惰性的”(在单击提交之前,
focusout
上的另一个字段将被忽略)。选项#2仅在您选择时才有意义。

由于您将“必需”设置为false,因此注释文本框不会获取指示器。这不是预期的行为吗?这是jquery-validation,不是jquery-validation-engine。取消高亮显示仅在输入从无效变为有效时使用。如果该字段不是必需的,则它永远不会无效,因此它不会更改,也不会得到突出显示。@Barmar哦,对不起,我弄错了。我的错。我需要一些解释:)
// force eager validation on this one field
$('#commentInput').on('focusout', function() {
    $(this).valid();  
});