2012-09-12 55 views
0

我有数目不详的选项的形式以下选择框:如何检查数组的对象是否等于选项值

<select> 
    <option value="v1">v1</option> 
    <option value="v2">va2</option> 
    <option value="v3">va3</option> 
    <option value="v11">v11</option> 
    <option value="v12">va12</option> 
    <option value="v13">va13</option> 
</select>​ 

我在JavaScript中定义了以下阵列:

var checkValArray = ['v1', 'v2', 'v13']; 

我想这样做是经过选择框的每一个选项,并查看我的数组的元素是否等于它。

什么是最好的方法来实践这个?

非常感谢您的帮助。

+0

我的问题是for循环的语法。我不知道我是否可以做某事。像jQuery.inArray(我,checkValArray)> -1 – Faili

+1

为什么不呢?唯一需要做的是将正确的_value_而不是_index_传递给'inArray'。顺便说一下,这个[doc page](http://api.jquery.com/selected-selector/)有一个例子,你可能会发现与你的案例有关。 – raina77ow

回答

3

有一个非常有用的jQuery API方法:$.inArray。因此,它应该是这样的:

var optionValue = $('select option:selected').val(); 
if ($.inArray(optionValue, checkValArray) !== -1) { 
    // it's in 
} 
else { 
    // it's not 
} 

对于它可能会像使用multiselects ...

$('select option:selected').each(function() { 
    if ($.inArray(this.value, checkValArray) !== -1) { ... } 
}); 
+0

就是这样。非常感谢。我会尽快接受ir。 – Faili

+0

不客气,很高兴提供帮助。 ) – raina77ow

1
$('select option').each(function() { 
    if ($.inArray($(this).val(),checkValArray)>-1) { 
    // do something 
    } 
}); 
+1

啊太晚了,哦。 – vonflow

0

这应该做的伎俩

var selectedArray = $("select#yourselectid").val(); 
var equal = $.extend($.extend([], checkValArray), selectedArray).length == checkValArray.length; 
1

你可以使用$ .inArray方法来实现这一点

var checkValArray = ['v1', 'v2', 'v13']; 

var options = $('select option'); 

$.each(options , function(i){ 
    if($.inArray($(this).val() , checkValArray) > -1){ 
     alert('Match Found'); 
    } 
}); 

检查FIDDLE

1

这里没有jQuery的一个解决方案:

var selectitems = document.getElementsByTagName("select")[0]; 
var items = selectitems.getElementsByTagName("option"); 
alert(items.length); 
for(var i = 0; i < items.length; i++) 
{ 
    alert(items[i].innerHTML); 
} 

相关问题