Я использовал библиотеку select2 для выпадающего поля и для создания нового тега - опция «createTag», код выглядит так -
function create_tag_custom (params) {
var term = $.trim(params.term);
var term_id = term;
if (term === '') {
return null;
}
$.ajax ({
'delay': 250,
'async': false,
'type': 'GET',
'url': "{% url 'my_url' %}",
'data': {'q': term},
'success': function(data) {
if (data["result"]) {
term_id = '' + data['result'][0] + '_';
term = '' + data['result'][1];
}
}
});
return {
id: term_id,
text: term,
newTag: true
}
}
$('#id_smart_source').select2({
width: "100%",
allowClear: true,
placeholder: "Select a prefix",
tags: true,
multiple: true,
createTag: create_tag_custom,
tokenSeparators: [',',';'," ", ", "],
});
и все работает правильно, новый тег один создан в выпадающем списке. Но я хочу создать один тег или несколько тегов одновременно. Чтобы код мог работать так, например, -
function create_tag_custom (params) {
var term = $.trim(params.term);
var term_id = term;
if (term === '') {
return null;
}
var results = null;
$.ajax ({
'delay': 250,
'async': false,
'type': 'GET',
'url': "{% url 'my_url' %}",
'data': {'q': term},
'success': function(data) {
if (data["result"]) {
results = $.map(data, function (item) {
return {
text: item[0],
id: item[0]
}
})
} else {
results = {
id: term_id,
text: term,
newTag: true
}
}
}
});
return results
}
Может ли select2 вернуть один или несколько новых тегов?