我假设all验证规则必须通过,这意味着您的minlength
如果长度为 4,则总是会失败。
另外,你还缺少一个$
before ("#PostalCode").length
.
还有这条线sets的价值#Country
.
$("#Country").val("Aus")
你想要get值,以及compare it to "Aus"
.
$("#Country").val() === "Aus"
尝试删除minlength
,并更改您的自定义函数。
尝试这个:
EDIT:进行了更改,以便您有 2 个验证器。
一验证该县是澳大利亚and该值的长度至少为 4。
另一个验证该县是not澳大利亚且该值的长度至少为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
}
}
});
或者,如果您不需要基于国家/地区的自定义验证消息,您可以这样做:
$.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
}
}
});