我有一个表格,以最小/最大长度为基础验证邮政编码.我需要将所有国家/地区的拉链最小值设为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");
Run Code Online (Sandbox Code Playgroud)
然后在规则中
rules: {
PostalCode: {
required: true,
minlength: 5 //for all countries except AUS
AusZip: true // for Aus
}
}
Run Code Online (Sandbox Code Playgroud)
长度不是要走的路吗?
我假设所有验证规则都必须通过,这意味着minlength如果你的长度为4 ,你的总是会失败.
此外,你错过了$之前("#PostalCode").length.
此行也设置了值#Country.
$("#Country").val("Aus")
Run Code Online (Sandbox Code Playgroud)
你想获得的价值,并比较它"Aus".
$("#Country").val() === "Aus"
Run Code Online (Sandbox Code Playgroud)
尝试删除minlength并更改自定义功能.
试试这个:
编辑:更改,以便您有2个验证器.
一个验证该县是澳大利亚,并且该值的长度至少为4.
另一个验证该县不是澳大利亚,并且该值的长度至少为5.
$.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
}
}
});?
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要基于国家/地区的自定义验证消息,则可以执行以下操作:
$.validator.addMethod("GlobalZip", function(value, element) {
var isAus = $("#Country").val() === "Aus";
if ( ( isAus && value.length < 4 ) || value.length < 5 ) {
return false;
} else return true;
}, "Zip Code is not long enough");
$('form').validate({
rules: {
PostalCode: {
required: true,
GlobalZip: true
}
}
});?
Run Code Online (Sandbox Code Playgroud)