7

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

我基本上想做相反的事情:Programmatically triggering typeahead.js result display

我尝试.trigger('blur');在预输入上做 a ,但我在此之前通过做.typeahead('setQuery', value);. 执行 'setQuery' 会触发一个 ajax 请求以使用新的查询词获取结果。所以“模糊”发生了,但盒子很快就打开了。

4

6 回答 6

16

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

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

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

于 2015-05-18T22:22:14.870 回答
1

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

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

无证,但有办法设置前提条件,不允许下拉菜单打开:

$('.typeahead-input').on('typeahead:beforeopen', function() {
    return false;
});
于 2019-05-01T19:24:12.327 回答
0

万一将来有人遇到这种情况,现在最好的方法是:

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

如果您打开 Chrome 开发人员工具并观察您键入和擦除时会发生什么,这就是 Typeahead 所做的一切,没什么神奇的。

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

Uncaught TypeError: Cannot assign to read only property 'highlight' of
于 2015-04-02T22:45:08.337 回答
0

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

虽然通过将 display 属性设置为 none 来隐藏菜单的其他答案中描述的方法有效,但我需要将其设置然后返回以display:block 将其显示回来以供后续使用。另外,它没有使用 API。

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

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

或者

$('#place_typeahead_control').typeahead('val', '');如果您在页面上有多个搜索控件并且您想要定位特定的一个。

于 2019-01-09T23:27:40.927 回答
-1

您可以在“打开”事件处理程序中触发“模糊”。如果下拉菜单闪烁片刻,您可以使用 CSS 暂时隐藏它。

于 2013-08-15T18:55:05.010 回答
-3

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

于 2013-08-15T20:19:04.873 回答