我正在使用typeahead.js进行预输入。
我基本上想做相反的事情:Programmatically triggering typeahead.js result display
我尝试.trigger('blur');
在预输入上做 a ,但我在此之前通过做.typeahead('setQuery', value);
. 执行 'setQuery' 会触发一个 ajax 请求以使用新的查询词获取结果。所以“模糊”发生了,但盒子很快就打开了。
我正在使用typeahead.js进行预输入。
我基本上想做相反的事情:Programmatically triggering typeahead.js result display
我尝试.trigger('blur');
在预输入上做 a ,但我在此之前通过做.typeahead('setQuery', value);
. 执行 'setQuery' 会触发一个 ajax 请求以使用新的查询词获取结果。所以“模糊”发生了,但盒子很快就打开了。
从 0.11 版开始,正确的方法是:
$('.typeahead').typeahead('close');
手册:https ://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#jquerytypeaheadclose
参考:https ://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md
$('.typeahead-input').typeahead('close');
无证,但有办法设置前提条件,不允许下拉菜单打开:
$('.typeahead-input').on('typeahead:beforeopen', function() {
return false;
});
万一将来有人遇到这种情况,现在最好的方法是:
$('.tt-dropdown-menu').css('display', 'none')
如果您打开 Chrome 开发人员工具并观察您键入和擦除时会发生什么,这就是 Typeahead 所做的一切,没什么神奇的。
此外,如果您尝试使用当前版本 (10.5) 设置查询,您将收到如下所示的错误:
Uncaught TypeError: Cannot assign to read only property 'highlight' of
在我的特殊情况下,typeahead API ( typeahead.js@0.11.1
) 中的专用 close 方法不起作用。可能是因为自定义 CSS 或我的代码中的一些错误。
虽然通过将 display 属性设置为 none 来隐藏菜单的其他答案中描述的方法有效,但我需要将其设置然后返回以display:block
将其显示回来以供后续使用。另外,它没有使用 API。
对我来说另一种更好的方法是清除输入的值,以便隐藏下拉菜单:
$('.typeahead').typeahead('val', '');
或者
$('#place_typeahead_control').typeahead('val', '');
如果您在页面上有多个搜索控件并且您想要定位特定的一个。
您可以在“打开”事件处理程序中触发“模糊”。如果下拉菜单闪烁片刻,您可以使用 CSS 暂时隐藏它。
不要调用 setQuery,而是添加另一个不执行 getSuggestions 的函数,您会玩得开心。