我有一个表单,以最小/最大长度为基础验证邮政编码。我需要为所有国家/地区提供5位数的拉链,除了澳大利亚,需要为4。 以下是我遇到的问题:
$.validator.addMethod(
"AusZip",
function(value, element) {
if ($("#Country").val("Aus") && ("#PostalCode").length < 4)) {
return false;
} else return true;
},
"Australian Zip Code Must Be at least 4 Digits");
然后在规则中
rules: {
PostalCode: {
required: true,
minlength: 5 //for all countries except AUS
AusZip: true // for Aus
}
}
长度不是要走的路吗?
答案 0 :(得分:8)
我假设所有验证规则必须通过,这意味着如果您的长度为4,则minlength
将始终失败。
此外,您在$
之前错过了("#PostalCode").length
。
此行设置 #Country
。
$("#Country").val("Aus")
您希望获取该值,将与<{1}}进行比较。
"Aus"
尝试删除$("#Country").val() === "Aus"
,然后更改自定义功能。
试试这个:
编辑:已更改,因此您有2个验证程序。
一个验证该县是澳大利亚和该值的长度至少为4.
另一个验证该县不澳大利亚,并且该值的长度至少为5.
minlength
或者,如果您不需要基于国家/地区的自定义验证消息,则可以执行以下操作:
$.validator.addMethod("AusZip", function(value, element) {
var isAus = $("#Country").val() === "Aus";
if ( isAus && value.length < 4 ) {
return false;
} else return true;
}, "Australian Zip Code Must Be at least 4 Digits");
$.validator.addMethod("NonAusZip", function(value, element) {
var isNotAus = $("#Country").val() !== "Aus";
if ( isNotAus && value.length < 5 ) {
return false;
} else return true;
}, "Zip Code Must Be at least 5 Digits");
$('form').validate({
rules: {
PostalCode: {
required: true,
AusZip: true,
NonAusZip: true
}
}
});