我想知道在JQuery自动完成中,当选项打开时,如果我点击选项框外部或按键盘上的ESC键,是否有一种方法可以关闭而不必选择一个选项。 有人知道正确的做法吗? 我认为可以使用某些方法来检查是否聚焦于自动完成,如果没有,则关闭它,但这只是一个想法。谢谢。
当对话框关闭时,只需关闭自动完成即可:
$("#dialog").dialog({
close: function() {
$('#tags').autocomplete('close');
}
});
看一下实际效果:http://jsfiddle.net/william/3Yz9f/1/。
更新
这取决于您所说的“通用”是什么意思。JavaScript非常注重事件。因此,最初,您希望自动完成在对话框关闭时关闭,因此这是答案的第一部分。当然,您可以将其绑定到某些间接事件,例如自动完成模糊或隐藏(您可能需要为隐藏创建自定义事件),但这会使您面临一些风险,因为它们是间接的。
现在,您希望在拖动对话框时关闭它;好吧,这也不难;您可以使用对话框的dragStart
事件来实现这一点,但它们是两个不同的事件,都在对话框上,而不是自动完成。我没有看到任何关于自动完成小部件的间接事件,当对话框被拖动时。
如果您的问题是通过ID引用自动完成小部件,您可以使用基于上下文的选择器,例如在对话框的事件处理程序中使用$('.ui-autocomplete-input', this)
而不是$('#tags')
。
$( "#search" ).catcomplete('search');
$( "#search" ).focus();
我期望它在.autocomplete小部件上也能够运作相同。