根据输入的ZIP码设置隐藏input值的问题排查求助
问题根因
- 相等判断逻辑错误:你当前的代码是直接将用户输入的单条ZIP码和整个ZIP数组做
==比对,JavaScript中字符串与数组不可能判定为相等,你需要的是判断输入值是否属于数组内的成员。 - 数据类型不匹配:输入框通过
val()拿到的内容是字符串类型,你提前定义的ZIP数组里存储的都是数字类型,即使输入的内容和数组内的数字字面量一致,也会因为类型不同判定为不匹配。
修正后代码
JS部分修改为以下内容即可:
var eastZips = [19144, 19103, 19104]; var westZips = [90210, 90211, 90212]; $("#zip").keyup(function() { // 把输入的字符串转成数字,和数组内的元素类型对齐 const inputZip = Number($(this).val()); // 用includes判断输入值是否在对应区域的ZIP数组中 if (eastZips.includes(inputZip)) { $("#REGION").val("East"); } else if (westZips.includes(inputZip)) { $("#REGION").val("West"); } else { $("#REGION").val("Not Found"); } });
如果需要兼容不支持Array.includes()的旧版本浏览器,可以把判断条件替换为eastZips.indexOf(inputZip) > -1,逻辑完全一致。
内容的提问来源于stack exchange,提问作者Jason Schaeffer
相关产品推荐
相关产品推荐

