![](https://cdn.userecho.com/characters/77.png?1)
Повторная инициализация плагина подсказок с UpdatePanel ASP.NET
Работаем с DaData из ASP.NET, написали клиентский контрол для ввода адреса с использованием DaData. Есть проблема при использовании контрола на UpdatePanel - необходимо вручную переинициализировать .suggestions, простое включение скрипта в HTML код не работает.
Пытаемся реализовать присвоение .suggestions руками после обновления, но, почему-то не работает:
$("input[type='text'],textarea").each(function() { this.suggestions = $("body").suggestions; this.suggestions(<параметры инициализации>)});
Тестовый стенд:
Ответ
![](/s/cache/3a/75/3a75636b9ad9c228349f3fdaca2eff38.png)
Я рекомендую вынести код инициализации подсказок в функцию, и просто вызывать её:
function initSuggestions(selector) { $(selector).suggestions({ ... }); } ... initSuggestions("#address-1"); initSuggestions("#address-2"); initSuggestions("#address-3");
![](https://cdn.userecho.com/characters/77.png?1)
Проблема в том, что банальный вызов $(selector).suggestions({ ... }); в сложных ситуациях выдаёт suggestions is undefined. Т.е. даже через селекторы jQuery глобальные расширения почему-то становятся недоступными для HTML разметки, которая приехала через ASP.NET UpdatePanel.
![](https://cdn.userecho.com/characters/68.png?1)
Была похожая проблема, оформление заказа на сайте так организовано, что при переходе на следующий шаг аяксом прогружается страница шага. На каких-то страницах есть код инициализации дадаты. Но можно и перемещаться назад, на предыдущие шаги. И когда повторно переходишь на шаг, на котором уже был, подсказки с полей слетают, потому что контент загружается по новой. Долго возился, вылечилось так. При повторной загрузке страницы я стал сначала очищать контейнер, куда загружал страницу, а потом уже грузить саму страницу. Таким образом все подключенное к старым контролам тоже удаляется. И после этого все отлично инициализируется и работает.
Сервис поддержки клиентов работает на платформе UserEcho
Я рекомендую вынести код инициализации подсказок в функцию, и просто вызывать её: