0

我有一个由类名而不是字段名定义的特定规则:

$.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/

如您所见,它破坏了它。仅输入一个字段后,两条消息都会消失。但事实并非如此。这是一个错误吗?

4

2 回答 2

0

如果我理解正确的话,我会建议您使用groups选项来简单地为两个字段显示一条消息。从逻辑上讲,由于您不需要填写两个字段,因此两个字段旁边不应有错误消息。似乎一条消息告诉用户选择两个中的一个更有意义。

然后,您需要使用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
        }
    }
});
于 2013-01-09T23:54:10.570 回答
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');

现在终于成功了!!!

于 2013-01-10T10:57:13.413 回答