Я пытаюсь динамически установить стиль для тегов Select2 на основе ответа AJAX. Например, пользователь вводит в своей строке имя пользователя для нового тега select, вызов ajax отправляет запрос, в котором контроллер видит, существует ли пользователь, и возвращает ответ.
Для пользователей, которые этого не делают. t существует, я хочу установить цвет фона этого тега.
Я пробовал использовать templateSelection
метод, найденный здесь , но он вызывается для каждого существующего тега всякий раз, когда появляется новый вводится один, поэтому стиль перезаписывается.
(document).ready(function() {
$('.assistants-to-add-input').select2({
tags: true,
tokenSeparators: [',', ' '],
maximumSelectionLength: 10, // Limit user inputted selections to 10
minimumResultsForSearch: -1, // Hide the search bar
templateSelection: function (data, container) {
//data.text is the text of the tag. container must be passed in in order for the tag to be styled
verifyUser(data.text, container);
return data.text;
},
//the ajax call
function verifyUser(userId, container) {
$.ajax ({
type: 'POST',
url: $('input[name="validationRoute"]').val(),
processResults: function (data) {
// Transforms the top-level key of the response object from 'items' to 'results'
return {
results: data.items
};
},
dataType: 'json',
data: {userId: userId, "_token": <token here>,},
success: function (data) {
if (data.isValid === 'false') {
//This works correctly, but goes off and on when new tags are entered
$(contaier).css("background-color", "red");
}
},
});
}
Я не могу изменить класс или стиль элементов напрямую, так как select2 повторно отображает каждый тег каждый раз, когда добавляется новый.