我有一个表格,以最小/最大长度为基础验证邮政编码.我需要为所有国家/地区提供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 } }
长度不是要走的路吗?
解决方法
我假设所有验证规则都必须通过,这意味着如果长度为4,则minlength将始终失败.
此外,你错过了$before(“#PostCode”).长度.
此行也设置了#Country的值.
$("#Country").val("Aus")
您想获得该值,并将其与“Aus”进行比较.
$("#Country").val() === "Aus"
试试这个:
编辑:更改,以便您有2个验证器.
一个人验证该县是澳大利亚,并且该值的长度至少为4.
另一个验证该县不是澳大利亚,并且该值的长度至少为5.
$.validator.addMethod("AusZip",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",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",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 } } });