我们有一条规则,我们所有的验证消息都必须在摘要中,因此默认的“此字段是必需的”不会削减它,因为消息在摘要中丢失了它们的上下文,因此需要特定的字段指示符。
我有一个我非常喜欢的解决方案,但很快就发现需要除了必填字段之外的消息(电子邮件,网址,自定义方法,如phoneUS等),所以我做了一些补充我的功能。
我一直在使用jQuery,但我不是优化领域的专家,所以我想获得一些专家帮助,以确定下面的函数是否可以优化...我的问题是,“是实际上有更好的方法来处理摘要中的自定义错误消息吗?“
$('.required, .email').each(function(index) {
var $this = $(this);
var label = (
$this.is(':radio')
? $("label[data-name='"+$this.attr('name')+"']")
: label = $("label[for='"+$this.attr('id')+"']")
);
var customMessages = [{}];
if($this.hasClass('required')){
customMessages.required = "'" + label.text() + "' is required.";
}
if($this.hasClass('email')){
customMessages.email = "'" + label.text() + "' has an invalid email address.";
}
$this.rules("add", {
messages: customMessages
});
});
这是jsFiddle: http://jsfiddle.net/GD5nw/1/
答案 0 :(得分:1)
那么为什么不像通常那样只为每个字段逐个字段地分配自定义消息?它似乎比你一直在做的更冗长。
http://docs.jquery.com/Plugins/Validation/validate#toptions
input
元素的示例,name
属性分配为first
,second
和address
。
$('#myform').validate({
rules: {
first: {
required: true
},
second: {
required: true
},
address: {
required: true,
digits: true // just an example
}
},
messages: {
first: {
required: "your first name is required"
},
second: {
required: "your last name is required"
},
address: {
required: "your address is required",
digits: "must only use digits on address"
}
}
});