首页 > 解决方案 > 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 中输出,但是当我填写输入字段时检查不起作用。

标签: javascriptjquery

解决方案


由于postcode1val-text它是一个包含值的数组,因此您必须map通过将callback提供的函数作为参数传递来使用方法。

此外,您需要使用Number构造函数,因为valueinput它返回的是 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"/>


推荐阅读