我遇到了解决这个问题的问题。在我们的表格中,我们根据您选择的国家/地区验证邮政编码(邮政编码)的长度。澳大利亚和匈牙利的最小长度为4个字符,巴林必须至少有3个字符,所有其他国家必须至少有5个字符。所以我写了一条规则:
澳大利亚
$.validator.addMethod("AusZip", function(value, element) {
var isAus = $("#UpdateCountry").val() === "AUS";
if ( isAus && value.length < 4 ) {
return false;
} else return true;
}, "Australian Zip Code Must Be at least 4 Digits");
匈牙利
$.validator.addMethod("HunZip", function(value, element) {
var isHun = $("#UpdateCountry").val() === "HUN";
if ( isHun && value.length < 4 ) {
return false;
} else return true;
}, "Hungarian Zip Code Must Be at least 4 Digits");
和巴林
$.validator.addMethod("BHRZip", function(value, element) {
var isBHR = $("#UpdateCountry").val() === "BHR";
if ( isBHR && value.length < 3 ) {
return false;
} else return true;
}, "Bahrain Zip Code Must Be at least 3 Digits");
此处指定的所有其他国家/地区,这就是我的问题所在
$.validator.addMethod("RegZip", function(value, element) {
var notAus = $("#UpdateCountry").val() != "AUS";
var notBHR = $("#UpdateCountry").val() != "BHR";
var notHun = $("#UpdateCountry").val() != "HUN";
if ( notAus && notBHR && notHun && value.length < 5 ) {
return false;
} else return true;
}, "Zip Code Must Be at least 5 Digits");
当我为“RegZip”添加规则时,即使您选择澳大利亚或匈牙利并且有4位数的拉链,您也会收到错误 - 如果您选择匈牙利并且有3位数的拉链,则会出现相同的错误。当我删除“RegZip”时,如果它少于4位,则只会在澳大利亚/匈牙利出现错误,如果小于3,则只会出现匈牙利错误。问题是所有其他国家都没有要求。我错过了什么?
THX!
编辑 - 添加“UpdateCountry”作为元素ID。作品。抱歉混淆 - 我的坏!
答案 0 :(得分:1)
使用您提供的代码,您只需验证RegZip
函数中的三个国家/地区,因为其他所有内容都返回true。您应该在else
子句中调用其他通用zip验证。
答案 1 :(得分:1)
更好的方法就是这样:
var zips = {
'AUS': { min: 4 },
'HUN': { min: 4 },
'BHR': { min: 3 }
};
var zipOther = { min: 5 };
$.validator.addMethod('zip', function(value, element) {
return value.length >= (zips[$('#UpdateCountry').val()] || zipOther)['min'];
}, 'Zip code not the correct length');
答案 2 :(得分:0)
我会删除所有关于$(“#Country”)的检查.val()和简单更改国家选择更改时输入的类名
修改强>
首先将类“RegZip”添加到要作为起点验证的输入
然后添加验证方法
$.validator.addMethod("AusZip", function(value, element) {
if (value.length < 4 ) {
return false;
} else return true;
}, "Australian Zip Code Must Be at least 4 Digits");
//Hungary
$.validator.addMethod("HunZip", function(value, element) {
if (value.length < 4 ) {
return false;
} else return true;
}, "Hungarian Zip Code Must Be at least 4 Digits");
//and Bahrain
$.validator.addMethod("BHRZip", function(value, element) {
if (value.length < 3 ) {
return false;
} else return true;
}, "Bahrain Zip Code Must Be at least 3 Digits");
//All other countries specified here, and this is where my problem is
$.validator.addMethod("RegZip", function(value, element) {
if ( notAus && notBHR && notHun && value.length < 5 ) {
return false;
} else return true;
}, "Zip Code Must Be at least 5 Digits");
将更改事件添加到下拉列表
$('#dropdown_menu_selector').onchange(function(){
if (this.value === "AUS"){
$('#input_to_validate').removeClass().addClass('AUSZip')
}
//etc etc..
});
验证表格
$('#formid').validate();