我有3个验证方法来验证表单字段。对于我必须验证的每个表单字段,我需要一直调用这3个验证器。是否可以编写一个验证器方法,在内部调用这3个方法并返回相应的错误?
/*
* Do not allow a name to include only underscores.
*/
jQuery.validator.addMethod('notallunderscores', function(value, element)
{
value = value.replace(/\_/g,'');
return this.optional(element) || value.length > 0;
}, "Enter more than only underscore characters.");
/*
* Do not allow a name to include only hyphens.
*/
jQuery.validator.addMethod('notallhyphens', function(value, element)
{
value = value.replace(/\-/g,'');
return this.optional(element) || value.length > 0;
}, "Enter more than only hyphens.");
/*
* Do not allow a name to include leading or trailing spaces.
*/
jQuery.validator.addMethod('notrailingorleadingspaces', function(value, element)
{
return this.optional(element) || ! value.match(/^ .*|.*\ $/g);
}, "Please remove any leading or trailing spaces.");
我正在寻找的验证器应该是这样的:
/*
* Call each of the above validator methods and return appropriate error.
*/
jQuery.validator.addMethod('validateformfield', function(value, element)
{
//Call the above 3 validator methods
//Return the appropriate error returned by the above validators.
}, "Return the error message from the failed validator.");
答案 0 :(得分:3)
不,您不能将三种不同的自定义方法合并到一个自定义方法中,同时还要保留三种不同的错误消息。没有办法将它们嵌套在一起。
然而,你可以制定一个"复合规则"并使用the addClassRules
method将其分配给class
。
jQuery.validator.addClassRules("myCompoundRule", {
notallunderscores: true,
notallhyphens: true,
notrailingorleadingspaces: true
});
然后您将class
分配给您希望应用这些规则的input
...
<input type="text" name="foo" class="myCompoundRule ...
否则,如果您不想使用class
,则必须使用.validate()
方法单独声明自定义规则,因为我认为您已经在做了。 ..
$('#myform').validate({
rules: {
foo: {
notallunderscores: true,
notallhyphens: true,
notrailingorleadingspaces: true
}
}
});
您还可以将各种规则组合到&#34; sets&#34;中。请参阅下面的我的答案,了解为多个字段分配多个规则的其他创造性方法。