Я использую Select2 (версия 3.4.0) для заполнения списка тегов. Теги сопоставлены с существующими через ajax-вызов, и я использую createSearchChoice
, чтобы разрешить создание новых тегов. Код работает до сих пор и выглядит примерно так:
$(mytags).select2({
multiple: true,
placeholder: "Please enter tags",
tokenSeparators: [ "," ],
ajax: {
multiple: true,
url: myurl,
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return data;
}
},
createSearchChoice: function(term) {
return {
id: term,
text: term + ' (new)'
};
},
});
Все довольно стандартно, за исключением добавления (new)
в createSearchChoice
. Мне нужно, чтобы пользователи знали, что это уже не существующий тег.
Он работает так, как ожидалось: если я начну вводить "новый тег", я получаю "новый тег (новый)", который предлагается в верхней части списка, и, если я его выберу, список тегов содержит "new- тег (новый)", как и ожидалось. Если тег уже существует, Select2 определяет совпадение, и не создается "(новый)" выбор. Нажатие на возврат или щелчок по совпадению работает как ожидалось.
Проблема возникает, когда я ввожу запятую (моя единственная запись tokenSeparators
), когда есть совпадение. Select2 закрывает этот токен и добавляет тег в список, но с добавленной меткой "(new)", то есть использует возвращаемое значение из createSeachChoice
, даже если это не обязательно.
Является ли это ошибкой в Select2, или я использую ее неправильно (и что мне делать вместо этого)?