我有一个特定的规则,它由类名而不是fieldname:
定义$.validator.addClassRules("fillone", {
require_from_group: [1,".fillone"]
});
我想覆盖默认的错误消息,所以我尝试了这个:
$.validator.addMethod("xrequire_from_group", $.validator.methods.required, 'Hey nutter, pick at least one');
$.validator.addClassRules("fillone", {
xrequire_from_group: [1, ".fillone"]
});
我在这里有一个小提琴来证明它首先没有干涉别名:
http://jsfiddle.net/houmie/fg6ae/1/
以下是别名后的内容:
http://jsfiddle.net/houmie/m9uNK/1/
正如你所看到的,它打破了它。只输入一个字段后,这两条消息都将消失。但事实并非如此。这是一个错误吗?
答案 0 :(得分:0)
如果我理解正确,我建议您使用the groups
option只显示两个字段的一条消息。从逻辑上讲,由于您不需要填写两个字段,因此两个字段旁边都不应该出现错误消息。这似乎只是一条消息告诉用户选择其中一个更有意义。
然后,您需要使用errorPlacement:
选项将其放置在您想要的任何位置。
工作演示: http://jsfiddle.net/m9uNK/2/
var validator = $(form).validate({
groups: {
groupname: "field1 field2" // as per docs, "groupname" is arbitrary
},
errorPlacement: function (error, element) {
if (element.attr("name") == "field1" || element.attr("name") == "field2") {
error.insertAfter("[name='field2']"); // adjust this accordingly
} else {
error.insertAfter(element); // this is default placement for everything else
}
}
});
答案 1 :(得分:0)
我终于找到了一个有效的解决方案,代码中有一个微妙的错误。
$.validator.addMethod("xrequire_from_group", $.validator.methods.required, 'Hey nutter, pick at least one');
替换为
$.validator.addMethod("xrequire_from_group", $.validator.methods.require_from_group, 'Hey nutter, pick at least one');
现在它起作用,终于!!!