select2更改事件而不删除已选择的选项

时间:2015-09-28 16:23:10

标签: javascript jquery select jquery-select2

我使用带有多个选项和编程访问权限的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>

1 个答案:

答案 0 :(得分: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

的副本一样发送