单击外部时,JQuery自动完成关闭选项

时间:2011-09-13 12:08:39

标签: jquery jquery-ui autocomplete dialog jquery-ui-autocomplete

我想知道JQuery Autocomplete中是否存在一种方法,如果单击OUTSIDE选项框以选择或单击键盘中的ESCAPE,则打开选项时。它关闭,无需选择一个选项。

任何人都知道正确的方法吗?仍然认为使用某些东西检查是否关注自动完成,如果不关闭它,但只是一个IDEA。

由于

2 个答案:

答案 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小部件上的工作方式也一样。