需要javascript检查夏威夷阿拉斯加州的邮政编码等

时间:2013-11-14 21:12:43

标签: javascript

根据邮政编码,是否有简单的方法(javascript)? 更确切地说,用户将输入一个邮政编码,如果该邮政编码位于美国大陆之外(如夏威夷,阿拉斯加,波多黎各等),那么它会隐藏免费送货选项。我知道这可以通过state字段轻松完成,但是zipcode字段怎么样?

4 个答案:

答案 0 :(得分:4)

美国大陆(当然不包括阿拉斯加,夏威夷和美国领土)的所有邮政编码的集合可以定义如下:

邮政编码大于00999但小于96200

OR

邮政编码等于或大于97000但小于99500

function isInContinentalUSA(zipcode)
{
    if((zipcode>'00999' && zipcode <'96200') || (zipcode>='97000' && zipcode <'99500')) {
      return true;
    } else {
      return false;
    }
}

<强>更新

美国境外地区遵循这些规则,因此我更新了以上代码以管理波多黎各

US Outlying territories
AP: 962** - 966**
PW/FM/MH/MP/GU: 969**
AS: 96799
PR: 006-009

从Addoa拨款:http://addoa.com/blog/how-restrict-free-shipping-magento

答案 1 :(得分:1)

USPS提供免费的API,用于从邮政编码中获取位置信息。见https://www.usps.com/business/web-tools-apis/address-information.htm

答案 2 :(得分:0)

您需要在客户端列出一些列表来判断是否允许使用邮政编码。

或者您需要ping服务器以检查邮政编码是否符合您给定的参数。

答案 3 :(得分:0)

http://www.unitedstateszipcodes.org/hi/显示夏威夷邮政编码以967和968开头。 http://www.unitedstateszipcodes.org/ak/显示阿拉斯加邮政编码以995,996,997,998和999开头。

所以,你想要这样的东西:

// var zipCodeStr
var notContinental = zipCodeStr.match(/^(967|968|995|996|997|998|999)/);

修改

megawc提出了一个好处,即如果我想要最有效率,我应该使用test,而不是match。所以我推荐这段代码:

var notContinental = /^(967|968|995|996|997|998|999)/.test(zipCodeStr);

另外,我注意到我之前的正则表达式缺少998和999,所以我将它们添加进来。