对于以下代码,
jQuery.validator.addMethod
(
"exactlength",
function(value, element, param)
{
return this.optional(element) || value.length == param;
},
jQuery.format("Please enter exactly {0} characters.")
);
我理解
value
是指输入字段值element
指的是输入字段本身param
指的是规则value.length == param
是指实际验证但我不太明白为什么this.optional(element) ||
包含在必填字段中。我在addMethod
看到的大多数例子似乎都有这部分条款。但是为什么它是强制性的,即使对于required
的字段也是如此。
其次,假设我想要电子邮件验证,我会添加类似的内容,
email:
{
required: true,
email: true,
},
我还要添加以下内容,
jQuery.validator.addMethod
(
"minLengthID",
function(value, element, param)
{
return this.optional(element) || value.length >= param;
},
jQuery.format("Please enter more than {0} characters.")
);
jQuery.validator.addMethod
(
"maxLengthID",
function(value, element, param)
{
return this.optional(element) || value.length <= param;
},
jQuery.format("Please enter less than {0} characters.")
);
但我不明白为什么this.optional(element) ||
在这里是必要的。我会很感激任何指示。
答案 0 :(得分:2)
首先,minlength
和maxlength
与email
规则完全吻合。
$('#myform').validate({
rules: {
emailaddress: {
required: true,
email: true,
minlength: 6,
maxlength: 30
}
}
});
<强> DEMO: http://jsfiddle.net/arex5q69/ 强>
但请注意,在评估email
和minlength
规则之前,您需要满足maxlength
规则。另请注意,一个非常短的电子邮件地址a@b.com
长度为六个字符,因此您的minlength: 6
规则会立即得到满足。
相反,如果您将minlength
和maxlength
规则放在 email
规则之前,那么它们将首先进行评估。
$('#myform').validate({
rules: {
emailaddress: {
required: true,
minlength: 6,
maxlength: 30,
email: true
}
}
});
<强> DEMO 2: http://jsfiddle.net/arex5q69/1/ 强>
this.optional(element) ||
作为自定义规则的一部分,只需在单独使用此规则时将您的字段设为 。
但是,当您将“可选”自定义规则与required: true
结合使用时,这是一个没有实际意义的点,因为该字段永远不会是可选的。
您将this.optional(element) ||
置于自定义规则中的原因是,它使您能够在有{J}个规则的字段上使用它。
否则,如果您遗漏required
,即使您可能不想要字段{{1},您的自定义规则也会始终创建字段this.optional(element) ||
}