私は英国の郵便番号に対して検証する必要がある単純なフォームに取り組んでいます。問題ありませんが、文字の長さに応じて検証する必要があります。ユーザーは、郵便番号の前半(つまり、SW1)または完全な郵便番号(つまり、SW1 1AB)のみを入力できます。
最善のアプローチは、KeyPressで長さを確認し、郵便番号の半分または全体について正規表現に対して検証することだと思いました。下記参照:
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(最初のキー押下)で停止し、それ以上続行しませんでした(つまり、後続のキー押下ではカウントされませんでした)。
私は自分自身を十分に明確に説明したと思います。私が明確でない場合は私に知らせてください。
自分でこれを修正するために同様の問題を検索しましたが、何も見つかりませんでした。助けていただければ幸いです。