gpt4 book ai didi

javascript - 使用 jQuery.inArray 在数组中查找项目

转载 作者:行者123 更新时间:2023-11-29 22:28:18 25 4
gpt4 key购买 nike

我试图简单地确定一个元素是否存在于数组中。我基本上是在寻找是否在 <select> 中选择了一个国家/地区。控件存在于 <optgroup> 中在另一个<select> ...想想国家和地区:

<select id="countries">
<option value=""></option>
<option value="US">United States</option>
<option value="IL">Israel</option>
<option value="CA">Canada</option>
</select>

<select id="territories">
<option value=""></option>
<optgroup label="USA">
<option value="CA">California</option>
</optgroup>
<optgroup label="CA">
<option value="ON">Ontario</option>
</optgroup>
</select>

jQuery:

// build array of available territories for counties
var territoryCountries = [];
$("select#territory optgroup").each(function() {
territoryCountries[territoryCountries.length] = $(this).attr('label');
});

// on change
$("select#country").change(function() {
if (!$.inArray($(this).val(), territoryCountries)) {
console.log("Not found, disable the territory input.");
} else {
console.log("Found, disable all unrelated territories.");
}
});

我遇到的问题是它不工作。它表明“IL”确实存在于 territoryCountries 中,当它不存在时,并且表明“USA”不存在于 territoryCountries 中,当它存在时。

我做错了什么?您可以在 JSFiddle 查看和运行代码.

  • 此外,我只是想做一个国家/地区选择输入。有一个更好的方法吗?我觉得我主要是在重新发明轮子来手工完成。

最佳答案

$.inArray 返回找到的项目的索引,如果没有找到,则返回 -1

因为你的测试看起来像这样:

if (!$.inArray($(this).val(), territoryCountries)) {

-1 结果(为真)通过了 if() 测试。

相反,您应该测试 === -1

if ( $.inArray($(this).val(), territoryCountries) === -1 ) {

关于javascript - 使用 jQuery.inArray 在数组中查找项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8251639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com