2015-09-28 3 views
0

Я использую select2 с несколькими опциями и программным доступом для выбора также кнопкой. Он отлично работает, но когда я нажимаю кнопку, все ранее выбранные значения удаляются и выбирается только значение с нажатой кнопки. Поскольку я использую множественный выбор, имеет смысл добавить значение clicked и оставить ранее выбранный, не удаляя их ... Есть ли еще одно событие для запуска, кроме «изменения», которое не удаляет значения, но вместо этого добавляет их?select2 change event без удаления уже выбранных опций

<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

Если вы включили HTML и немного JS, чтобы мы могли лучше понять окружающую среду, у вас есть, что было бы полезно. –

+0

добавил html и javascript .. Я использую этот jquery для выбора поля https://select2.github.io/ – Torostar

+0

Сделай еще один шаг и создай его http://www.jsfiddle.net – vol7ron

ответ

1

хорошо, не видя рабочую демо, я предполагаю, что вы хотите, чтобы добавить теги на к выбор2 без стирания, что теги/мульти-выбирает уже там? Если да, то вам нужно будет оценить значение элемента, и добавлять новые Vals, а не просто вызов $ example.val (значение), которое заменяет значение указанного элемента

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

Seels как дубликат SELECT2 -> Add data without replacing content

+0

привет Джей, да вы правильно поняли, чего я хочу. Я попытался с вашим предложением, но он не добавляет данные в поле. Если я сделаю console.log (данные) после вашего кода, он показывает [Object {id = "8541506", text = "something"}] ... как я должен добавить данные в поле сейчас? – Torostar

+0

какая версия select2 вы используете? –

+0

im using select2/4.0.0 – Torostar

Смежные вопросы