使用jQuery在multiselectbox中选择基于子字符串的选项

时间:2013-12-19 23:55:17

标签: jquery multi-select

说我有以下选择框:

<select id = "cars">
   <option>BMW 320d</option>
   <option>BMW 330d</option>
   <option>BMW 525d</option>
   <option>Mercedes E220</option>
   <option>Peugeot 207</option>
   <option>Peugeot 307</option>
</select>
<input type = "button" id = "selectbmw" value = "Select all BMWs" />

我想要一个按钮,选择宝马所有的汽车;也就是说,它会选择包含“BMW”的所有元素。

<select id = "cars">
   <option selected>BMW 320d</option>
   <option selected>BMW 330d</option>
   <option selected>BMW 525d</option>
   <option>Mercedes E220</option>
   <option>Peugeot 207</option>
   <option>Peugeot 307</option>
</select>

我想这样做:

<script>
   $('#selectbmw').click(function() {
    $('#cars').multiSelect('select', 'contains:"BMW"');
    });
</script>

我正在使用multiselect.js这个多选框。请注意,我的值字段包含汽车的名称,但是包含数据库中的id,因此不能选择基于值查找。如有必要,我可以为汽车名称设置id,name或label属性。

1 个答案:

答案 0 :(得分:2)

您需要将所选值的数组传递给多选,因此首先使用.map()

创建包含BMW的所有选项的数组
$('#selectbmw').click(function () {
    var vals = $('#cars option:contains("BMW")').map(function () {
        return this.value
    }).get();
    $('#cars').multiSelect('select', vals);
});

演示:Fiddle