2012-09-12 54 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); 
} 

相關問題