我正在尝试使用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,这意味着它不属于该数组。我该如何解决这个问题?
答案 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');
}