2015-06-20 2 views
1

я не могу показаться, чтобы получить этот код, чтобы работать (а именно, получение 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

Спасибо за все быстрые ответы ребята! Похоже, что 'parseInt' был тем, что я искал, - быстрым и простым решением. – ksy

+0

Просто обратите внимание, что при использовании' parseInt' следует соблюдать осторожность: http://stackoverflow.com/questions/4090518/string-to-int-use -parseint-or-number –

+0

Спасибо за головы Jason – ksy

ответ

4

Посмотрите, как вы сравниваете номер и строки

function isInArray(value, array) { 
     return array.indexOf(parseInt(value,10)) !== -1 
} 
+1

Чтобы добавить контекст к этому ответу, я редактировал вопрос, чтобы включить 'return' в' isInArray', но в ответ добавлялось 'parseInt' – ksy

1

Разбираем ваш $ ('# ZipCode'). Val() перед использованием функции IndexOf().

return array.indexOf(parseInt(value); 
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(); 
    } 
}); 
Смежные вопросы