Клуб API Карт

Как закрыть SuggestView?

bonkor
23 октября 2016, 16:07

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

При изменении скриптом инпута, к которому привязан SuggestView, появляется выпадающая панель с подсказками. Как этого избежать, или как закрыть ее после появления?

13 комментариев
Подписаться на комментарии к посту
Сам мучаюсь, и похоже что ответ "никак". Из доступных методов - только destroy(). Из доступных событий - вообще ноль. Программное изменение текста инпута вызывает практически принудительное всплытие suggest'a, кторому плевать на то, что событие onchange/onfocus/onclick не происходило. Попутно спрошу у отзывчивого саппорта - как избежать появления suggest, если он полностью совпадает с содержимым поля ввода, он ведь бесполезен в этом случае, а при клике все равно всплывает?
kosilka75,

> как избежать появления suggest, если он полностью совпадает с содержимым поля ввода, он ведь бесполезен в этом случае, а при клике все равно всплывает?


Это решается через свой provider
dimik,
ReferenceError: ISuggestProvider is not defined

kosilka75,
это не объект, это интерфейс, который надо реализовать
dimik,
 

suggest = new ymaps.SuggestView($keywords[0], {
  results: 10,
   provider: {
     suggest: function(req, opts)  {
      


     }

   },
});


TypeError: this._makeRequest(...) is undefined
kosilka75,
У меня нет этой ошибки
https://jsfiddle.net/v9hee4w4/1/
dimik,
Спасибо, понял. Трудновато по документации ориентироваться, не все очевидно.
kosilka75,
Предложения по улучшению документации всегда принимаются и рассматриваются. Лично я (не разработчик АПИ) не испытываю с ней проблем – обычная документация не хуже и не лучше чем все другие документации.
Динамическое обновление без показа подсказок можно сделать через свой макет – опция layout.


https://jsfiddle.net/v9hee4w4/
Спасибо большое, но это фактически равносильно тому, чтобы делать ему destroy(). Ведь после установки suggestView.state.set('open', false) , suggestView перестает работать. Если я делаю:
===============================

suggestView.state.set({
open: false,
panelClosed: true,
items: []
});
document.getElementById('suggest').value = 'санкт-петербург';
suggestView.state.set('open', true);
===============================
чтобы разрешить дальнейшую работу пользователя, то в момент установки опции в true, подсказка снова всплывает.


bonkor,
Видимо надо было хачить провайдер.
https://jsfiddle.net/v9hee4w4/3/
dimik,
просто слов нет! Спасибо огромное!


P.S. А про .events.once() где-то написано?
bonkor,
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/event.Manager-docpage/#once