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