jquery-select2: 用一个按钮一次选择多个选项

jquery-select2: selection of multiple options at once with a button

我有一个可以 selected 的用户列表(多个 selection 是可能的)。当然,所有用户都可以手动 selected,这非常好。

此外,我还有用户组。大多数时候,只需要 select 一组用户。因此我想要一种添加所有用户的快捷方式,只需单击组名即可。

我是 select2 的忠实粉丝,但我无法让它工作。

我发现可以通过 .val() 函数对元素进行 selected。但是这些元素仅在另一个元素被 selected 时显示。

所以我需要一种更新功能。我该怎么做?

我尝试触发事件(如更改)但没有成功。

你能帮帮我吗?

<link href="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0-rc.2/css/select2.css" rel="stylesheet" />
<script src="//cdnjs.cloudflare.com/ajax/libs/select2/4.0.0-rc.2/js/select2.full.js"></script>

<script type="text/javascript">
$("#id_invited_user").select2({
 "placeholder": "Select user",
});

$("#testbuttonclick").on('click',function (clickEvent){
            clickEvent.preventDefault();
             $("#id_invited_user").val([1,2]);
          });
</script>

<select multiple="multiple" class="selectmultiple form-control" 
id="id_invited_user" name="invited_user">
<option value="1">Option1</option>
<option value="2">Option2</option>
<option value="3">Option3</option>
<option value="4">Option4</option>
<option value="5">Option5</option>
</select>

<a href="" id="testbuttonclick" >select predefined options</a>

除了遗漏了一个重要细节外,您的所有代码都是正确的。

无论何时更改 Select2(或任何其他 JavaScript 组件)的值,都应始终触发 change 事件。该事件在值更改时由浏览器原生触发,但在以编程方式更改值时必须手动触发。

$("#id_invited_user").trigger("change");

这应该始终放在您调用 .val(xyz) 之后。