【问题标题】:select2 change event without removing already selected optionsselect2 更改事件而不删除已选择的选项
【发布时间】:2015-09-28 16:23:10
【问题描述】:

我正在使用带有多个选项的 select2 和通过按钮进行选择的编程访问。它工作正常,但是当我点击按钮时,所有以前选择的值都被删除,只有点击按钮的值被选中。由于我使用的是多项选择,因此添加单击的值并保留先前选择的值而不删除它们是有意义的...除了“更改”之外是否还有另一个事件要触发,它不会删除值而是添加它们?

<select id="id_entities" class="js-example-programmatic" style="width:100%" multiple="multiple">
</select>

<td><button id="prefix_{{teu.entity_id}}" class="js-programmatic-set-val" value="{{teu.entity_id}}" name="{{teu.entity}}"><i class="fa fa-plus"></i></button></td>
<td>{{teu.entity}}</td>
<td>{{teu.user}}</td>

<script >
$(".js-example-programmatic").select2({
    minimumInputLength: 2,
    placeholder: "Select entities...",
    allowClear: true,
    multiple:true,
    delay: 250,
    tags:false,
    ajax: {
        url: '/entities/search/autocomplete/',
        dataType: 'json',
        data: function (parms, page) { return { title: parms.term }; },
    },
});
</script>
<script>
var $example = $('#id_entities');
$("button[id^='prefix_']").click(function(){
   value = $(this).attr('value');
   value_name = $(this).attr('name')
 if ($('#id_entities option[value="'+value+'"]').length > 0) {
 } 
  else { 
     $("#id_entities").append('<option value="'+value+'">'+value_name+'</option>');
  }
$example.val(value).trigger("change");
  });
</script>

【问题讨论】:

  • 如果您包含 HTML 和少量 JS,以便我们更好地了解您所拥有的环境,这将是有用的。
  • 添加了 html 和 javascript.. 我使用这个 jquery 来选择框 select2.github.io
  • 更进一步,创建它@jsfiddle.net

标签: javascript jquery select jquery-select2


【解决方案1】:

好吧,没有看到工作演示,我假设您想要的是将标签附加到 select2 而不删除已经存在的标签/多选?如果是这样,您将需要评估元素值,并附加新的 val,而不仅仅是调用 $example.val(value),它会替换所述元素的值

var data = $(test).select2('data');
data.push({id:5,text:"fixed"});
$(test).select2("data", data, true); // true means that select2 should be refreshed

好像是SELECT2 -> Add data without replacing content的复制品

【讨论】:

  • 嗨,Jay,是的,你正确理解了我想要什么。我尝试了您的建议,但它没有将数据添加到框中.. 如果我在您的代码之后执行 console.log(data) 它显示 [Object { id="8541506", text="something"}]...我现在应该如何将数据附加到框中?
  • 您使用的是哪个版本的 select2?
  • 我正在使用 select2/4.0.0
猜你喜欢
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2012-08-20
  • 2013-07-23
  • 2016-05-14
相关资源
最近更新 更多