Select2 динамически изменяет стиль тега на основе ответа AJAX - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь динамически установить стиль для тегов 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 повторно отображает каждый тег каждый раз, когда добавляется новый.

...