JS检查输入是否在数组范围内

时间:2014-02-20 09:18:27

标签: javascript jquery arrays

我正在尝试使用JavaScript验证输入,我想要的是在用户输入未包含在我的数组中的内容时显示警告。

这是我到目前为止所拥有的

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

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

例如,如果在上面用户输入'5',我将警告'5',val的值然后-1,这意味着它不属于该数组。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

您的数组包含字符串,但您要将值转换为数字:

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

由于Array.prototype.indexOf执行严格的相等比较,因此无法在数组中找到值。

可以用实际数字替换数组的值,但由于"m""M"不会转换为数字,所以它不会那样工作(你'当你试图强迫他们时,最终会得到NaN

答案 1 :(得分:1)

只需在字符串

中转换您的值
    alert(validAr.indexOf(val.toString()));

并删除+ from + document.getElementById('arrow _'+ i +'_ 1')。value

所以你的代码将是

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

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

答案 2 :(得分: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" />

答案 3 :(得分:0)

当你使用jQuery时,你可以这样做:

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