我已将两个输入字段分组,因此无论有多少输入字段无效,它都只显示一条错误消息。
如果我将它们都留空并尝试提交表单,我的问题就出现了 - 只要我在其中一个中输入任何内容,错误消息就会消失。如果我选择并取消选择空输入字段,它会重新出现。
我希望只要一个或多个输入字段无效,就会保留错误消息。并且当两个空输入字段中的一个填写完毕时,防止错误消息消失。
这是我的代码:
HTML
<form>
<div>
<label for="fname">First Name</label>
<input name="fname" id="fname" class="required">
</div>
<div>
<label for="lname">Last Name</label>
<input name="lname" id="lname" class="required">
</div>
<input type="submit" />
</form>
的Javascript
$("form").validate({
groups: {
name: 'fname lname'
},
errorPlacement: function (error, element) {
if (element.attr('name') == 'fname' || element.attr('name') == 'lname')
error.insertAfter('#lname');
}
});
和JSFiddle。
谢谢!
答案 0 :(得分:5)
引用OP:
&#34;如果我将它们都留空并尝试提交表单,我的问题就出现了 - 只要我在其中一个中输入任何内容,错误消息就会消失。如果我选择并取消选择空输入字段,它会重新出现。&#34;
是的,您已将两个错误消息合并为一个。因此,只要满足活动字段的条件,消息就会清除。你不能使它符合第2场条件,同时它需要准确地遵循第1场条件......它只是一次处理一个。
引用OP:
&#34;我想要的是,只要一个或多个输入字段无效,错误消息就会保留。并且当两个空输入字段中的一个填写完毕时,防止错误消息消失。&#34;
只要您使用groups
选项,它就会完全按照设计运作。
groups
选项是专门针对某些方法设计的,例如require_from_group
,当您想要填写一组元素中的一个元素时,您不需要查看相同的消息在每个元素上重复。 groups
允许您为这组字段使用单个消息。 (这是单个消息对应于单个条件的位置,但是,您尝试使单个消息符合多个条件。)
也许您会想要使用showErrors
功能。
这样的事情(相应调整):
$("form").validate({
showErrors: function (errorMap, errorList) {
$("#summary").html("Your form contains " + this.numberOfInvalids() + " errors:");
this.defaultShowErrors();
},
errorPlacement: function () {
return false; // <- kill default error labels
}
});
DEMO:http://jsfiddle.net/wdDtR/
另一个版本经过调整,表现得更像原版:
$("form").validate({
showErrors: function (errorMap, errorList) {
$("#summary").html("field is required");
if (this.numberOfInvalids() > 0) {
$("#summary").show();
} else {
$("#summary").hide();
}
},
errorPlacement: function () {
return false; // <- kill default error labels
}
});