Ответ 1
К сожалению, я не могу найти какой-либо родной метод. Но если вас интересуют простые "обходные пути", возможно, это поможет вам ближе:
$('.select2').select2({
tags: true,
tokenSeparators: [",", " "],
createTag: function (tag) {
return {
id: tag.term,
text: tag.term,
// add indicator:
isNew : true
};
}
}).on("select2:select", function(e) {
if(e.params.data.isNew){
// append the new option element prenamently:
$(this).find('[value="'+e.params.data.id+'"]').replaceWith('<option selected value="'+e.params.data.id+'">'+e.params.data.text+'</option>');
// store the new tag:
$.ajax({
// ...
});
}
});
[EDIT]
Вышеуказанное будет работать только при добавлении тега с помощью мыши. Для тегов, добавленных пробелом или запятой, используйте событие change
.
Затем вы можете фильтровать option
с помощью атрибута data-select2-tag="true"
(новый добавленный тег):
$('.select2').select2({
tags: true,
tokenSeparators: [",", " "]
}).on("change", function(e) {
var isNew = $(this).find('[data-select2-tag="true"]');
if(isNew.length){
isNew.replaceWith('<option selected value="'+isNew.val()+'">'+isNew.val()+'</option>');
$.ajax({
// ... store tag ...
});
}
});