我想知道JQuery Autocomplete中是否存在一种方法,如果单击OUTSIDE选项框以选择或单击键盘中的ESCAPE,则打开选项时。它关闭,无需选择一个选项。
任何人都知道正确的方法吗?仍然认为使用某些东西检查是否关注自动完成,如果不关闭它,但只是一个IDEA。
由于
答案 0 :(得分:8)
关闭对话框时,只需关闭自动完成功能:
$("#dialog").dialog({
close: function() {
$('#tags').autocomplete('close');
}
});
请参阅此操作:http://jsfiddle.net/william/3Yz9f/1/。
<强>更新强>
这取决于你的意思是“一般”。 JavaScript非常注重事件。因此,最初,您希望在关闭对话框时关闭自动完成功能,因此答案的第一部分。当然你可以将它绑定到一些间接事件,例如自动完成模糊或隐藏(你可能需要为隐藏做一个自定义事件),但这会给你一些风险,它们可能不会被触发,因为它们是间接的
现在你希望它在拖动对话框时关闭;好吧,这也不难;您可以使用dragStart
事件对话来实现此目的,但它们是两个不同的事件,包括对话框,而不是自动完成。拖动对话框时,我在自动完成小部件本身上看不到任何间接事件。
如果您的问题是通过ID引用自动填充小部件,则可以使用基于上下文的选择器,例如在对话框的事件处理程序中使用$('.ui-autocomplete-input', this)
而不是$('#tags')
。
答案 1 :(得分:3)
我遇到了同样的问题。你只需要做一件小事。 在调用'search'方法后,设置焦点。 Esc并在框外单击将关闭下拉列表。
我正在使用类别子类(http://jqueryui.com/demos/autocomplete/#categories) 所以我的代码看起来像
$( "#search" ).catcomplete('search');
$( "#search" ).focus();
我希望它在.autocomplete小部件上的工作方式也一样。