Цель: я хочу автоматически выбирать опцию «Ouvidoria» в раскрывающемся списке формы FormCraft, когда к форме обращаются через URL-адрес с помощью определенный параметр (например, ?assunto=Ouvidoria).
Среда:
[*]сайт WordPress с плагин FormCraft.
[*]Раскрывающийся список улучшен плагином Select2.
[*]Форма включается в страницу с помощью короткого кода, например [fc id= '1'][/fc].
[*]В раскрывающемся поле есть поле идентификатора13 внутри формы.
Попытки:
Первоначальная попытка JavaScript:
Пыталась с использованием простого документа. Ready в сочетании с setTimeout, чтобы гарантировать полную загрузку Select2. Я попытался выбрать раскрывающийся список, используя его конкретный класс .fc-form .form-element-field13 select и применить значение из параметра URL.
Проблема: сценарий либо запускается слишком рано, прежде чем форма будет полностью инициализирована, или не выбирает правильное поле из-за динамической отрисовки FormCraft и Select2.
Использование интервала для проверки существования элемента:
Перед применением значения установите интервал для проверки каждые 100 мс, доступен ли раскрывающийся список в DOM.
Проблема: этот подход не помог. не работает постоянно, возможно, из-за неправильного выбора элемента DOM или конфликтов с тем, как FormCraft динамически загружает контент.
Метод триггера Select2:
Использовал selectField.val(assunto).trigger('change.select2') для программного задания значения раскрывающегося списка.
Проблема: в раскрывающийся список; похоже, что Select2 не распознает изменение или сценарий не нацелен на правильный элемент.
Код: Выделить всё
$(document).ready(function() {
var urlParams = new URLSearchParams(window.location.search);
var assunto = urlParams.get('assunto');
setTimeout(function() {
var selectField = $(".fc-form .form-element-field13 select");
if (selectField.length) {
selectField.val(assunto).trigger('change.select2');
console.log('Dropdown set to:', assunto);
}
}, 1000);
});
Как убедиться, что сценарий правильно нацеливается и изменяет раскрывающийся список Select2 после его полной инициализации в форме FormCraft?
Есть ли более надежный способ дождаться готовности динамических элементов FormCraft и Select2 перед выполнением JavaScript?
Любые идеи или альтернативные подходы для решения этой проблемы буду очень признателен!
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-formcr
Мобильная версия