0
Отвечен

Повторная инициализация плагина подсказок с UpdatePanel ASP.NET

Mihon 4 года назад обновлен DaData user 27539 1 месяц назад 5

Работаем с DaData из ASP.NET, написали клиентский контрол для ввода адреса с использованием DaData. Есть проблема при использовании контрола на UpdatePanel - необходимо вручную переинициализировать .suggestions, простое включение скрипта в HTML код не работает.

Пытаемся реализовать присвоение .suggestions руками после обновления, но, почему-то не работает:

$("input[type='text'],textarea").each(function() { this.suggestions = $("body").suggestions; this.suggestions(<параметры инициализации>)});


Тестовый стенд:

http://codepen.io/anon/pen/GrbyxB

Ответ

Ответ
Отвечен

Я рекомендую вынести код инициализации подсказок в функцию, и просто вызывать её:

function initSuggestions(selector) {
  $(selector).suggestions({ ... });
}

...
initSuggestions("#address-1");
initSuggestions("#address-2");
initSuggestions("#address-3");
Ответ
Отвечен

Я рекомендую вынести код инициализации подсказок в функцию, и просто вызывать её:

function initSuggestions(selector) {
  $(selector).suggestions({ ... });
}

...
initSuggestions("#address-1");
initSuggestions("#address-2");
initSuggestions("#address-3");

Проблема в том, что банальный вызов $(selector).suggestions({ ... }); в сложных ситуациях выдаёт suggestions is undefined. Т.е. даже через селекторы jQuery глобальные расширения почему-то становятся недоступными для HTML разметки, которая приехала через ASP.NET UpdatePanel.

Окей, вам виднее. Я страшно далёк от ASP.NET UpdatePanel

Была похожая проблема, оформление заказа на сайте так организовано, что при переходе на следующий шаг аяксом прогружается страница шага. На каких-то страницах есть код инициализации дадаты. Но можно и перемещаться назад, на предыдущие шаги. И когда повторно переходишь на шаг, на котором уже был, подсказки с полей слетают, потому что контент загружается по новой. Долго возился, вылечилось так. При повторной загрузке страницы я стал сначала очищать контейнер, куда загружал страницу, а потом уже грузить саму страницу. Таким образом все подключенное к старым контролам тоже удаляется. И после этого все отлично инициализируется и работает.

Сервис поддержки клиентов работает на платформе UserEcho