0

我有一个警报,该警报依赖于一个包含 50 个美国中的大约 38 个的数组,它工作正常(感谢您的帮助)但现在我担心用户可能会输入我目前使用的格式的变体,即两个大写字母(即 WA、OR、GA 等)。如果他们要输入小写字母(即 wa, or, ga)或者可能是大写和小写字母的组合(即 Wa, Or, Ga)或带有符号(即 WA - Washington, OR - Oregon, GA - Georgia),该怎么办?想知道是否有更准确的方法可以捕捉所有变化。

我指的是最后一个警报,底部指向#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可以通过几种方式处理。一种解决方案是简单地使用前两个字符(所以你会得到WA),但如果他们自己输入州名,那就行不通了;它适用于华盛顿,但不适用于乔治亚州。

我倾向于使用maxlength属性 ( maxlength="2") 在输入框中强制限制 2 个字符。所有浏览器都应该支持这一点,并清楚地表明您期望的是状态代码而不是状态名称。

最后一个选项是,如果该验证始终适用,则使用<select>仅包含有效状态的元素。这将完全消除对客户端验证的需要(尽管您仍然需要进行服务器端验证)。

于 2013-10-01T15:15:32.757 回答
1

http://jsbin.com/uQEJIkU/1/edit

$(document).ready(function() {

  var state = "Wisconsin";
  var result = state.slice(0,2).toUpperCase()

  alert(result)

});

所有优点都归功于@Anthony_Grist,因为他在评论中得到了第一个答案。

于 2013-10-01T15:09:56.967 回答