ПЫТАТЬ синтезировать информацию, которая в настоящее время разбросана в разных ответах и комментариях ... Ваш код не работает из-за двух вещей:
- Вы используете
in
который проверяет ключи, а не значения в массиве. Так, например, 3 in [1,2,3]
будет ложным, так как [1,2,3]
имеет ключи (индексы) 0,1,2
.
- Вполне возможно, что ваше значение является строкой
Решение, чтобы убедиться, что ваше значение имеет правильный тип, и использовать правильную функцию. Есть два очевидных варианта:
indexOf - returns the index of the (first) element that matches
inArray - is available if you are using jQuery
Пример кода:
var v = parseInt($(this).val()); // radix 10
var r = [1,2,3]; // the values to check against
if(r.indexOf(v) > -1) { // method 1
if($.inArray(v, r)) { // method 2
Вы можете кэшировать '$ (это) .val()' в локальной переменной, то ваше условное выражение будет как производительный и читаемым , –