JS проверить, если вход находится в диапазоне массива

0

Я пытаюсь проверить ввод с использованием JavaScript, я хочу, чтобы вывести предупреждение, если пользователь вводит что-то, что не входит в мой массив.

Вот что я до сих пор

var validAr = ["1","2","3","4","5","6","7","8","9","10","m","M"];
//dont mind the i it been previously declared
val =+ document.getElementById('arrow_' + i + '_1').value

alert(val);
alert(validAr.indexOf(val));

Если, например, в приведенном выше примере пользователь вводит "5", я буду предупреждать "5", значение val а затем -1, что означает, что он не принадлежит массиву. Как я могу это решить?

  • 0
    Я думаю, вам лучше использовать регулярные выражения для такого рода проверок. вот полезный справочник tech.pro/tutorial/1214/…
Теги:
arrays

4 ответа

3
Лучший ответ

Ваш массив содержит строки, но вы преобразовываете значение в число:

val = +document.getElementById('arrow_'+i+'_1').value
//    ^ Remove this to keep the value as a string

Поскольку Array.prototype.indexOf выполняет строгое сравнение равенства, он не может найти значение в массиве.

Вы можете заменить значения вашего массива на фактические числа, но поскольку "m" и "M" не будут преобразовываться в числа, это не сработает (в итоге вы получите NaN когда вы попытаетесь их принудить).

  • 0
    Да, теперь я понимаю, я преобразовываю это в число, потому что оно мне нужно позже. Преобразуется в строку только для проверки и отлично работает.
1

просто преобразуйте свое значение в строку

    alert(validAr.indexOf(val.toString()));

а также удалите + из +document.getElementById('arrow _' + я + '_ 1'). значение

поэтому ваш код будет

var validAr = ["1","2","3","4","5","6","7","8","9","10","m","M"];
//dont mind the i it from a for above
val = document.getElementById('arrow_'+i+'_1').value;

alert(val);
alert(validAr.indexOf(val.toString()));
  • 0
    Да, я использовал +, потому что мне нужен номер позже. Это исправило это. Спасибо
0

пытаться

   $(document).ready(function () {
        var validAr = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "m", "M"];

        $("#text").change(function () {
            if (jQuery.inArray($(this).val(), validAr) == -1) {
                alert("exception");
            }
        });
    });

<input type="text" id="text" />
  • 0
    почему бы просто не перейти с <0?
  • 0
    @jogesh_pi Я проверил это. его работает нормально
0

Когда вы используете jQuery, вы можете:

if (jQuery.inArray(val,validAr)==-1)
{
    alert('Invalid');
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню