【问题标题】:Adding values to a multiple select with jQuery's select2使用 jQuery 的 select2 向多选添加值
【发布时间】:2013-05-30 16:15:30
【问题描述】:

我在<select>multiple="multiple" 上使用select2 jQuery 插件。我需要将值添加到所选列表(即不是所有选项,而是所选选项,而不添加新选项)。

我知道我可以使用this 设置选定的选项:

$("#the_select").select2("val", "the_option_value"); 

或者,多选:

$("#the_select").select2("val", ["an_option_value","another_option_value"]); 

但是,有没有一种方法可以将 选定的选项 添加到列表中(即选择一个选项)而不删除其他选项?

【问题讨论】:

    标签: jquery selection jquery-select2 multiple-select multipleselection


    【解决方案1】:

    你应该可以使用这个:

    $("#the_select").append($('<option>', {value:"NEWVAL", text: "New Option Text"}));
    

    它将新的选项项附加到列表的末尾。

    HTH

    编辑

    Take 2 :) - 我在 select2 页面上的 chrome 开发工具中尝试了这个。它有效(我添加了“WA”并且出现了Washington

    var selectedItems = $("#the_select").select2("val");
    selectedItems.push("NEWITEMVAL");   // I used "WA" here to test.
    $("#the_select").select2("val", selectedItems);
    

    或作为一个班轮:

    $("#the_select").select2("val", $("#the_select").select2("val").concat("NEWITEMVAL"));
    

    【讨论】:

    • 抱歉造成误会。我不想添加选项,我想选择一个选项。另外,我怀疑这在不重新初始化 select2 插件的情况下是否可行。
    • 为什么投反对票?您确实声明“我需要向所选列表添加值”。 :-) 而且它可以在不重新初始化插件的情况下工作。试试看。
    • 选中,而不是select。此外,如果您查看过代码,您会看到我正在更改值(因此选择了一次)而不是选择的选项。它可能有效,它没有按照我的要求做,所以它不是我问题的答案。我会改写它以使其更清楚。
    • 谢谢,这就是我要找的。但是有没有select2 的命令可以做到这一点,这样我就不需要三行了?
    • 太棒了——这样更好! select2 上似乎没有任何东西可以做到这一点 - (github.com/ivaynberg/select2/blob/master/select2.js#L3011)。如果您真的愿意,您可以随时自行扩展插件。
    【解决方案2】:

    这就是我的做法:

          $("#the-select")
            .val($("#the-select")
              .val()
              .concat([array_of_existing_values]));
          $("#the-select")
            .trigger("change");
    

    HTH

    【讨论】:

      猜你喜欢
      • 2023-02-22
      • 1970-01-01
      • 2023-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多