使用jQuery将所选选项设置为多个列表

问题描述 投票:5回答:2

我有一个DB列表,显示在选择多个标签中:

<select multiple="multiple" id="list" name="color">
  <option value="1">Red</option>
  <option value="2">Green</option>
  <option value="3">Blue</option>
  <option value="4">Magenta</option>
  <option value="5">Black</option>
  <option value="6">Cyan</option>
  <option value="7">Yellow</option>
</select>

给定来自DB的值数组,需要仅选择在DB数组中找到的那些项,例如[2,4,7]。如何使用jQuery,attr('selected')推送这些选项标签?

<select multiple="multiple" id="list" name="color">
  <option value="1">Red</option>
  <option value="2" selected="selected">Green</option>
  <option value="3">Blue</option>
  <option value="4" selected="selected">Magenta</option>
  <option value="5">Black</option>
  <option value="6">Cyan</option>
  <option value="7" selected="selected">Yellow</option>
</select>

像上面一样。

javascript jquery html multiple-select
2个回答
9
投票

您只需使用.val()方法来实现:

$('#list').val([2,4,7]);

$('#list').val([2,4,7]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select multiple="multiple" id="list" name="color">
  <option value="1">Red</option>
  <option value="2">Green</option>
  <option value="3">Blue</option>
  <option value="4">Magenta</option>
  <option value="5">Black</option>
  <option value="6">Cyan</option>
  <option value="7">Yellow</option>
</select>

2
投票

为了完整起见,我想我会添加一个简单的JavaScript解决方案。

这是我想出来的,使用数组,循环,document.querySelectorsetAttribute

var preSelected = [2,4,7];

for (var i = 0; i < preSelected.length; i++) {
var option = document.querySelector('#list option[value="' + preSelected[i] + '"]');
option.setAttribute('selected','selected');
}
<select multiple="multiple" id="list" name="color">
<option value="1">Red</option>
<option value="2">Green</option>
<option value="3">Blue</option>
<option value="4">Magenta</option>
<option value="5">Black</option>
<option value="6">Cyan</option>
<option value="7">Yellow</option>
</select>
© www.soinside.com 2019 - 2024. All rights reserved.