javascript - jQuery检查输入的值是否在数组中
问题描述
我正在尝试检查输入字段的值是否在数组中,但它似乎不起作用。
这是我尝试过的:
var postcode1 = [];
for (var i = 21000; i < 21999; i++) {
postcode1.push({ val: i, text: i });
}
console.log(postcode1);
$('#fw_form_field_146').blur(function() {
var val = $("#fw_form_field_146").val();
if( $.inArray(val, postcode1) > -1 ) {
alert('test');
}
});
该数组在 console.log 中输出,但是当我填写输入字段时检查不起作用。
解决方案
由于postcode1val-text
它是一个包含值的数组,因此您必须map
通过将callback
提供的函数作为参数传递来使用方法。
此外,您需要使用Number
构造函数,因为value
从input
它返回的是 astring
并且您的given
数组包含原语 numbers
var postcode1 = [];
for (var i = 21000; i < 21999; i++) {
postcode1.push({ val: i, text: i });
}
$('#fw_form_field_146').blur(function() {
var val = $(this).val();
if( $.inArray(Number(val), postcode1.map(({val}) => val)) !== -1 ) {
alert('test');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="fw_form_field_146"/>
另一种方法它使用includes
方法。
var postcode1 = [];
for (var i = 21000; i < 21999; i++) {
postcode1.push({ val: i, text: i });
}
$('#fw_form_field_146').blur(function() {
var val = $(this).val();
if(postcode1.map(({val})=> val).includes(Number(val))) {
alert('test');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="fw_form_field_146"/>