确定Javascript数组的变体

时间:2013-10-01 15:02:56

标签: javascript arrays

我有一个警报依赖于包含50个美国大约38个的阵列,它工作正常(感谢你精彩的人的帮助)但现在我担心用户可能输入我目前使用的格式的变体是两个大写字母(即WA,OR,GA等)。如果他们要输入小写(即wa,或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>

2 个答案:

答案 0 :(得分:2)

可以使用String.toUpperCase函数处理案例问题。您只需获取它们输入的值,将其转换为大写,然后将其与数组中的值进行比较。因此,无论他们是否输入WA,Wa,wa或wA,您都将使用WA进行比较。

以某种其他格式输入值的用户,例如WA - Washington,可以通过几种方式处理。一种解决方案是简单地取前两个字符(所以你得到WA),但如果它们自己输入状态名称则不起作用;它适用于华盛顿,但不适用于格鲁吉亚。

我倾向于使用maxlength属性(maxlength="2")在输入框中强制限制2个字符。这应该得到所有浏览器的支持,并明确表示您期望的是州代码而不是州名。

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

答案 1 :(得分:1)

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

$(document).ready(function() {

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

  alert(result)

});

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