Клуб API Карт

При клике по карте - SuggestView выскакивает постоянно

i@pa6ok.ru
24 мая 2016, 12:14

Здравствуйте!

Использую SuggestView для реализации поисковых подсказок. При клике на карте у меня создаётся некий объект, и срабатывает geocode на получение текущего адреса, данный адрес вставляется в input, к которому привязан SuggestView. После всех этих действий постоянно выскакивает подсказка. Видимо SuggestView думает, что в input что-то пишут и вываливает подходящие варианты адреса.

Вопрос: как заморозить SuggestView на время, чтобы при совершении клика по карте и изменении value в input, блок с подсказками не вываливался? В документации на него только метод destroy() описан. Неужели нельзя никак сделать так, чтобы в определённых ситуациях, выскакивающий блок с подсказками не выскакивал?

14 комментариев
Подписаться на комментарии к посту
У меня не вываливается
ЧЯДН?
dimik,
Вот - https://jsfiddle.net/Gvozdb/t7cz0qhj/
i@pa6ok.ru,
зачем нужно делать focus/blur?
dimik,
В любой момент, пользователь приложения, которое я пишу, нажмёт на инпут (focus), и переключит фокус на другой элемент (blur). Затем и focus/blur...
i@pa6ok.ru,
Если нажмет, значит хочет что-то исправить и подсказки ему как раз пригодятся. Если вам эта логика не подходит, значит вам не подойдет SuggestView
dimik,
Вам не понятно, зачем там фокус блюр, до сих пор? Я зашёл на страницу с картой, кликнул на поле адреса, потом передумал и решил кликнуть на карте, дабы адрес указался автоматически. Кликнул на карте, в поле адреса вставился адрес и вывалился блок с подсказками, хотя в данный момент я в поле вручную ничего не вводил. Даже фокуса на поле не было.
dimik,
Объясню по иному:
В вашем коде SuggestView срабатывает и подсказки не вываливаются, потому что на поле не было клика, а в моём - срабатывает искусственный клик (focus/blur) и поэтому подсказки вываливаются. Логичнее было бы сделать работу SuggestView так, чтобы подсказки вываливало только в том случае, если на элементе, к которому привязан данный модуль (SuggestView), в данный момент действует focus.
i@pa6ok.ru,
Спасибо, мы посмотрим что тут можно сделать
dimik,
Благодарю! А нет варианта как-то это обойти мне уже сейчас? Может быть есть какой-то параметр или опция у объекта SuggestView, которая замораживает вывод подсказок?
i@pa6ok.ru,
сейчас есть только destroy =)
dimik,
)) Понятно... Даже если использовать его, то перед инициализацией SuggestView - надо разрушать карту, инициализировать SuggestView и снова инициализировать карту... а потом снова, при необходимости, разрушать SuggestView, разрушать карту, инициализировать SuggestView и инициализировать карту. Это жесть, мягко говоря. :)
i@pa6ok.ru,
зачем разрушать карту? только SuggestView
dimik,
У меня проблемы с построением маршрута начинались, когда я не разрушая карты разрушал и инициализировал SuggestView. А также, когда я после инициализации карты инициализировал SuggestView, тоже какие-то странности с построением маршрутов были.
Отсюда сделал вывод: не спроста при подключении скрипта карты передаётся параметр &onload с названием функции, которая будет инициализировать SuggestView перед инициализацией карты. Пришлось отказаться от передачи названия функции в параметре &onload, но отлично срабатывает запуск этой функции перед инициализацией карты.
i@pa6ok.ru,
Он передается чтобы без лишнего кода создать SuggestView.
Можно и без onload использовать ymaps.ready