0

米国の 50 州のうち約 38 州を含む配列に依存するアラートがあります。正常に動作します (すばらしい人々の助けに感謝します)。文字 (つまり、WA、OR、GA など)。小文字 (例: wa、or、ga)、または大文字と小文字の組み合わせ (例: Wa、Or、Ga)、または記号 (例: WA - ワシントン、OR - オレゴン、GA - ジョージア) を入力する場合はどうでしょうか。すべてのバリエーションをキャッチする、これを行うより正確な方法があるかどうか疑問に思っています。

私が言及しているアラートは最後のもので、下部にある #address_province を指しています。

私はJavascriptとjQueryの両方を使用することに非常に慣れていないことに注意してください。提供できる限りの詳細をいただければ幸いです。

事前にどうもありがとうございました。

<script>
// Hides shipping info fieldset if ship to billing is checked
$(function () {
    $("#ship_to_billing").change(function () {
        if ($(this).is(":checked")) $("#shipping_info").hide();
        else $("#shipping_info").show();
    });
});

// Validates address fields are filled out unless ship to billing is checked...   
function validateShipping() {
    if (!$("#ship_to_billing").is(":checked")) {
        var inputs = $("#shipping_info input");
        var ready = true;
        inputs.each(function () {
            if ($(this).val() == '') {
                ready = false;
                return false;
            }
        });
        if (!ready) {
            alert("Please tell us where to send this. Either choose ship to Billing Address or fill out both the Recipient Name as well as Shipping Address fields. Thanks!");
            return false;
        }
    }
        // Makes sure age verification is checked 
        if (!$('#age_verification').is(':checked')) {
            alert("Please verify you are 21 years of age or older.");
            return false;       
        }   
      // Confirms province is allowed for wine shipping 
          var states = ["AK", "AZ", "CA", "CO", "CT", "FL", "GA", "HI", "ID", "IL", "IN", "IA", "KS", "LA", "ME", "MD", "MI", "MN", "MO", "NE", "NV", "NH", "NJ", "NM", "NY", "NC", "ND", "OH", "OR", "SC", "TN", "TX", "VT", "VA", "WA", "WV", "WI", "WY"];
              if ($.inArray($("#address_province").val(), states) <0) {
                 alert("Shipping gifts containing alcohol to this state is prohibited by law. Please choose another item.");
                 return false;       
        }
 return true;
}

</script>
4

2 に答える 2

2

ケースの問題は、String.toUpperCase関数を使用して処理できます。入力した値を大文字に変換し、配列の値と比較するだけです。したがって、WA、Wa、wa、または wA のいずれを入力しても、WA を比較に使用することになります。

WA - Washingtonいくつかの方法で処理できるなど、他の形式で値を入力するユーザー。1 つの解決策は、単純に最初の 2 文字を取得することです (つまり、 を取得しますWA) が、州名を単独で入力するとうまくいきません。ワシントンではうまくいくが、ジョージアではうまくいかない。

maxlength属性 ( )を使用して、入力ボックスに 2 文字の制限を適用する傾向がありますmaxlength="2"。これはすべてのブラウザーでサポートされている必要があり、州名ではなく州コードが必要であることを明確にします。

最後のオプションの 1 つは、その検証が常に適用可能な場合、<select>有効な状態のみを含む要素を使用することです。これにより、クライアント側の検証の必要性が完全になくなります (ただし、サーバー側の検証は引き続き行う必要があります)。

于 2013-10-01T15:15:32.757 に答える