有没有办法关闭typeahead.js的下拉菜单
Is there a way to close the dropdown menu for typeahead.js?
我正在使用typeahead.js进行typeahead。
我基本上想做相反的事情:用程序触发typeahead.js结果显示
我曾尝试在typeahead上执行.trigger('blur');
,但在此之前我通过执行.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
)中的专用关闭方法不起作用。也许是因为自定义CSS或者我代码中的一些错误。
虽然在另一个答案中描述的通过将display属性设置为none来隐藏菜单的方法奏效了,但我需要将其设置回display:block
,以将其显示出来供后续使用。此外,它没有使用API。
对我来说,另一个更好的方法是清除输入的值,以便隐藏下拉列表:
$('.typeahead').typeahead('val', '');
或
$('#place_typeahead_control').typeahead('val', '');
,以防页面上有多个搜索控件,并且您希望针对特定的一个。
您可以在"打开"的事件处理程序中触发"blur"。如果下拉框闪烁了一段时间,您可以使用CSS将其隐藏起来。
不要调用setQuery,而是添加另一个不执行getSuggestions的函数,这样会玩得很开心。
- JS在选择下拉菜单打开时创建延迟
- JS下拉菜单没有'不起作用
- JS下拉菜单显示在图像旋转器上
- 使用 d3.js 添加下拉菜单
- HTML、CSS、JS响应下拉菜单
- 使用jQuery动态设计js下拉菜单的样式
- JS下拉菜单未关闭
- 如何在我的js下拉菜单/显示内容框上的不同内容之间切换
- 为什么我的css/js下拉菜单在到达它的末尾之前就隐藏了
- 为什么这个非常基本的JS下拉菜单不起作用
- Ember.js中的Foundation.js下拉菜单
- Angular JS下拉菜单使用ng点击和ng显示来显示动态内容
- 平板电脑/手机上JS下拉菜单的关闭按钮
- JS下拉菜单中的链接不会重定向
- Javascript,如何调整这个js下拉菜单
- 当我将鼠标悬停在项目上时,我的CSS/JS下拉菜单不会保持在下
- JS下拉菜单行为
- Knockout Js下拉菜单没有加载来自WebAPi Service的值
- CSS vs. Javascript(或库js)下拉菜单
- 使用js下拉菜单预加载图像