我似乎无法使此代码生效(即让isInArray(userZipCode,chicagoZipCodes)
返回true
。
var chicagoZipCodes = [ 60018, 60068, 60176, 60601, 60602, 60603, 60604, 60605, 60606, 60607, 60608, 60609,
60610, 60611, 60612, 60613, 60614, 60615, 60616, 60617, 60618, 60619, 60620, 60621,
60622, 60623, 60624, 60625, 60626, 60628, 60630, 60631, 60632, 60634, 60636, 60637,
60639, 60640, 60641, 60642, 60643, 60644, 60645, 60646, 60647, 60649, 60651, 60652,
60653, 60654, 60655, 60656, 60657, 60659, 60660, 60661, 60706, 60707, 60714 ]
function isInArray(value, array) {
return array.indexOf(value) !== -1
}
elem.bind('change', function(e) {
userZipCode = $('#zipCode').val();
alert(isInArray(userZipCode,chicagoZipCodes));
if ( !(isInArray(userZipCode, chicagoZipCodes)) && (userZipCode.length > 4) ) {
// success
alert("Sorry, that is not a Chicago area zip code! :(");
e.stopImmediatePropagation();
}
})
答案 0 :(得分:4)
看起来比较数字和字符串
function isInArray(value, array) {
return array.indexOf(parseInt(value,10)) !== -1
}
答案 1 :(得分:1)
在使用indexOf()函数之前解析你的$('#zipCode')。val()。
return array.indexOf(parseInt(value);
答案 2 :(得分:1)
从DOM返回的所有值都是字符串,因此您需要将它们转换为数字。您可以通过几种方式执行此操作,但最直接的方法是使用Number作为函数而不是构造函数。
var chicagoZipCodes = [60018, 60068, 60176, 60601, 60602, 60603, 60604, 60605, 60606, 60607, 60608, 60609,
60610, 60611, 60612, 60613, 60614, 60615, 60616, 60617, 60618, 60619, 60620, 60621,
60622, 60623, 60624, 60625, 60626, 60628, 60630, 60631, 60632, 60634, 60636, 60637,
60639, 60640, 60641, 60642, 60643, 60644, 60645, 60646, 60647, 60649, 60651, 60652,
60653, 60654, 60655, 60656, 60657, 60659, 60660, 60661, 60706, 60707, 60714
]
function isInArray(value, array) {
return array.indexOf(value) !== -1
}
elem.bind('change', function(e) {
// All values returned from the DOM are strings
// so we need to convert them to a number
userZipCode = Number($('#zipCode').val());
alert(isInArray(userZipCode, chicagoZipCodes));
// Check length first since all Chicago zips listed are greater than 4 digits
// Saves the more expensive check of searching the array for
// only zips that are greater than 4
if ((userZipCode.length > 4) && !(isInArray(userZipCode, chicagoZipCodes))) {
// success
alert("Sorry, that is not a Chicago area zip code! :(");
e.stopImmediatePropagation();
}
});