You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据Select2多选组件选中值更新另一组件并获取新增选中值

解决方法

你的问题在于当前代码总是取第一个选中项,而不是刚新增的那个。Select2的change事件会传递包含新增/移除项信息的参数,我们可以通过e.params.added直接获取刚选中的单个值。

另外,不要在每次change事件里重新初始化第二个Select2组件,这会导致不必要的重复初始化,应该在页面加载时一次性初始化。

修正后的代码如下:

// 先初始化第二个Select2组件(只执行一次)
$('#id_new_states').select2({
    theme: "classic",
    multiple: true,
    placeholder: "Select States",
});

// 监听第一个Select2的change事件
$('#id_old_states').on("change", function (e) {
    // 仅处理新增选中项的情况
    if (e.params && e.params.added) {
        const addedItem = e.params.added;
        // 创建新选项并添加到第二个Select2
        const newOption = new Option(addedItem.text, addedItem.id, false, false);
        $('#id_new_states').prepend(newOption).trigger('change');
    }
});

关键说明:

  • e.params.added:这个对象包含刚选中项的id和text属性,直接取它就能拿到最新选中的单个值。
  • 避免重复初始化第二个Select2:将初始化代码放在事件监听外面,确保只执行一次。
  • trigger('change'):添加新选项后触发change事件,让Select2更新UI,否则新选项不会在下拉框中显示。

内容的提问来源于stack exchange,提问作者Sanket Patil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:25:40