有没有办法关闭typeahead.js的下拉菜单?

时间:2013-08-14 21:44:59

标签: javascript jquery typeahead typeahead.js

我正在使用typeahead.js进行预先输入。

我基本上想要反过来这样做:Programmatically triggering typeahead.js result display

我尝试在typeahead上执行.trigger('blur');,但我通过执行.typeahead('setQuery', value);在此之前设置了值。执行'setQuery'会触发ajax请求,以使用新的查询字词获取结果。因此,“模糊”发生,但此后不久就会打开盒子。

6 个答案:

答案 0 :(得分:15)

正确的方法,从版本0.11开始:

$('.typeahead').typeahead('close');

手动:https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#jquerytypeaheadclose

答案 1 :(得分:0)

如果将来遇到这种情况,现在最好的方法是:

$('.tt-dropdown-menu').css('display', 'none')

如果您打开Chrome开发者工具并观察键入和删除时发生的情况,这就是Typeahead正在做的事情,没有什么神奇之处。

此外,如果您尝试使用当前版本(10.5)来设置查询,您将收到如下错误:

Uncaught TypeError: Cannot assign to read only property 'highlight' of

答案 2 :(得分:0)

在我的特殊情况下,来自typeahead API(typeahead.js@0.11.1)的专用close方法不起作用。可能是因为自定义CSS或我的代码中的某些错误。

other answer中描述的通过将display属性设置为none来隐藏菜单的方法,我需要先将其设置为display:block,然后再显示给以后使用。另外,它没有使用API​​。

对我来说,另一种更好的方法是清除输入的值,以便隐藏下拉菜单:

$('.typeahead').typeahead('val', '');

$('#place_typeahead_control').typeahead('val', '');,以防页面上有多个搜索控件,并且要定位特定的搜索控件。

答案 3 :(得分:0)

参考:https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md

a3

未公开,但可以设置前提条件,不允许下拉菜单打开:

$('.typeahead-input').typeahead('close');

答案 4 :(得分:-1)

您可以在“已打开”事件处理程序中触发“模糊”。如果下拉列表闪烁片刻,您可以使用CSS将其隐藏起来进行过渡。

答案 5 :(得分:-3)

不是调用setQuery,而是添加另一个不执行getSuggestions的函数,并且你会玩得很开心。