首页 > 解决方案 > 如何以编程方式在 select2 多选下拉列表中添加其他选择而不会丢失现有的选定项目

问题描述

我有一个场景,比如每当用户在多选 select2 下拉列表中选择特定的“状态”时,必须自动选择另一个状态。

例如,如果用户选择状态“A”,那么状态“C”也必须被选择。逻辑是 A 和 C 总是在一起。

我正在寻找执行此操作的选项,目前,我正在捕获select2:select事件并检查所选项目是 A 还是 C,如果是,则使用

select2Object.select2('data')

然后遍历项目并获取值,然后附加状态'C'的值,然后触发更改事件。

有没有直接的方法可以做到这一点?例如,如果我和

select2Object.val("C"); 
select2Object.trigger('change'); 

此代码将清除所有其他选择并仅选择状态“C”。我正在寻找一种解决方案来添加新的选择项而不会丢失旧的选择项。

标签: javascriptformsjquery-select2

解决方案


这应该很简单。您需要做的就是保存现有选择,推送新值并触发更改事件。因此,对于您的情况,这应该有效:

// get all selected options (including the one you just selected)
let data = select2Object.val();

/* some logic that determines 'C' should be added */
data.push('C');
select2Object.val(data).trigger('change'); 

推荐阅读