Элемент DOM не обновлен в функции Handlers Event Handlers (SELECT/UNSELECT)Jquery

Программирование на jquery
Ответить Пред. темаСлед. тема
Anonymous
 Элемент DOM не обновлен в функции Handlers Event Handlers (SELECT/UNSELECT)

Сообщение Anonymous »

Длительная борьба с стилизацией тегов select2 (действительный/недействительный), поскольку после отмены выбора тега (событие select2:unselect) состояние элемента DOM (выбранного с помощью jQuery) не отражается в функции обработчика.
Контекст:
У меня есть поле select2 в моей форме, которое не имеет опций, доступных в раскрывающемся списке, поскольку ввод служит для создания новых объектов с тегами select2: true параметр.
При выборе тега ajax выполняется запрос GET, чтобы проверить, существует ли такой объект. Если это так, то стиль тега указывает на его недопустимое состояние. Он хорошо работает при добавлении новых тегов. Однако, если я отменяю выбор даже одного тега, остальные «недействительные» теги восстанавливаются до значений по умолчанию, и все стили сбрасываются.
Во время отладки я обнаружил, что при срабатывании обработчика select2:unselect (тег уже не выбран и удален из инспектора DOM в браузер) родительский контейнер ссылается на дочерние элементы, параметры которых не актуальны в соответствии с DOM (console.log() печатает дочерние элементы, имеющие класс, который фактически не назначен в тот момент, но был назначен до события select2: unselect сработало).
let invalidTags = new Set();

function validateCustomTag() {
var tags = $("#serials-form").find("li.select2-selection__choice");

tags.each(function () {
const tag = $(this); // Get the current tag element
const serialNumber = tag.attr("title");

// Proceed with AJAX validation
$.ajax({
type: "GET",
url: SERIAL_NUMBER_VALIDATION_URL,
data: { serial_number: serialNumber },
dataType: "json",
success: function (data) {
const response = data.response;

if (!response.valid) {
// Add the invalid serial number to the Set
invalidTags.add(serialNumber);

// Append error message
const errorElement = `[*]${response.error}`;
$("#snAjaxErrors").removeClass("d-none");
$("#snAjaxErrors").append(errorElement);

}
},
});
});
}

function applyInvalidStyles() {
invalidTags.forEach((sn) => {
const select2FieldContainer = $("#serials-form")
let tag = select2FieldContainer.find(`li[title=${sn}]`)
tag.addClass("bg-danger bg-opacity-50 text-light");
});
}

$(document).ready(function () {
$("#id_serial_numbers").on("select2:select", function () {
validateCustomTag();
applyInvalidStyles();
});

$("#id_serial_numbers").on("select2:unselect", function () {
// Reapply invalid styles after any redraw
applyInvalidStyles();
});
)};


Подробнее здесь: https://stackoverflow.com/questions/793 ... t-function
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Элемент DOM не обновлен в функции Handlers Event Handlers (SELECT/UNSELECT)
    Anonymous » » в форуме Javascript
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Trigger Custom Dom Event и потребление DOM Event, полученное в Java Eclipse RCP- jxbrowser
    Anonymous » » в форуме JAVA
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Считается ли вызов функций манипуляции с DOM из модуля DOM.JS в модулях index.js как логика и разлука DOM?
    Anonymous » » в форуме Javascript
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous
  • C# ListView ItemSelectionChanged Event Multi Select получает ТОЛЬКО последний выбранный элемент
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между ожиданием Task Event и Event.Wait
    Anonymous » » в форуме C#
    0 Ответы
    43 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Jquery»