3

有没有一种简单的方法可以根据邮政编码做某事(在 javascript 中)?更准确地说,用户将输入邮政编码,如果该邮政编码在美国大陆之外(如夏威夷、阿拉斯加、波多黎各等),那么它会执行类似隐藏免费送货选项的操作。我知道这可以通过 state 字段轻松完成,但是 zipcode 字段呢?

4

4 回答 4

4

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

邮政编码大于 00999 但小于 96200

或者

邮政编码等于或大于 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

于 2013-11-14T21:17:15.863 回答
1

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

于 2013-11-14T21:19:52.743 回答
0

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

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

于 2013-11-14T21:16:28.017 回答
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,所以我添加了它们。

于 2013-11-14T21:19:37.860 回答