我使用带有多个选项和编程访问权限的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>
答案 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
的副本一样发送