我正在制作一个简单的表格,我需要根据英国邮政编码进行验证。没问题,但我需要根据字符长度进行验证。用户可以只输入邮政编码的前半部分(即 SW1)或完整的邮政编码(即 SW1 1AB)。
我认为最好的方法是检查 KeyPress 上的长度并针对 RegEx 验证半个邮政编码或整个事情。见下文:
jQuery('.ValPostCode').keyup(
function(){
if (jQuery(this).length < 5){
jQuery.validator.addMethod("ValPostCode", function(value, element) {
return this.optional(element) || /([A-PR-UWYZa-pr-uwyz]([0-9]{1,2}|([A-HK-Ya-hk-y][0-9]|[A-HK-Ya-hk-y][0-9]([0-9]|[ABEHMNPRV-Yabehmnprv-y]))|[0-9][A-HJKS-UWa-hjks-uw]))/.test(value);
}, "Please enter a valid postcode");
} else if (jQuery('.ValPostCode').length > 4) {
jQuery.validator.addMethod("ValPostCode", function(value, element) {
return this.optional(element) || /^(GIR\\s{0,1}0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\\s{0,1}[0-9][ABD-HJLNP-UW-Z]{2})$/.test(value);
}, "Please enter a valid postcode");
}
});
因此,如果 char 的长度.ValPostCode
小于 5,则它仅验证英国邮政编码的前半部分,否则它会检查完整且有效的英国邮政编码。
有一次我在输出长度,.ValPostCode
但它总是停在 1(第一次按键),然后不再继续(即不会随着后续按键计数)。
我希望我已经足够清楚地解释了自己,如果我不清楚,请告诉我。
我已经搜索了类似的问题来尝试为自己解决这个问题,但我找不到任何东西。任何帮助表示赞赏!