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'];

私がやりたいのは、選択ボックスのすべてのオプションを調べて、配列の要素がそれに等しいかどうかを確認することです。

これを実践するための最良の方法は何でしょうか?

あなたの助けは大歓迎です。

4

5 に答える 5

3

非常に便利なjQueryAPIメソッドがあります:$。inArray。したがって、次のようになります。

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

複数選択の場合、次のようなもので使用できます...

$('select option:selected').each(function() {
   if ($.inArray(this.value, checkValArray) !== -1) { ... }
});
于 2012-09-12T16:14:45.690 に答える
1
$('select option').each(function() {
  if ($.inArray($(this).val(),checkValArray)>-1) {
    // do something
  }
});
于 2012-09-12T16:21:45.540 に答える
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を確認してください </p>

于 2012-09-12T16:21:55.907 に答える
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);
}

</ p>

于 2012-09-12T16:24:51.053 に答える
0

これはトリックを行う必要があります

var selectedArray = $("select#yourselectid").val();
var equal = $.extend($.extend([], checkValArray), selectedArray).length == checkValArray.length;
于 2012-09-12T16:21:47.287 に答える