【问题标题】:JQuery Autocomplete close option when click outside单击外部时 JQuery 自动完成关闭选项
【发布时间】:2011-11-16 03:04:09
【问题描述】:

我想知道 JQuery 自动完成中是否有一种方法,如果我单击选项框外部进行选择或单击键盘上的 ESCAPE,则何时打开选项。它关闭,无需选择一个选项。

有人知道正确的方法吗?仍然认为使用某些东西来检查是否聚焦自动完成,如果不关闭它只是一个想法。

谢谢

【问题讨论】:

  • 不是默认动作吗?您能否重新表述您的问题,因为很难理解您的目标是什么?
  • 好吧,如果你使用 firefox 就不会了。使用 firefox,并测试此示例 jsfiddle.net/3Yz9f,放置一个 s,然后单击 close。仍然是选项,如果按 ESC 则相同。
  • 现在我知道你的意思了,但是你没有在你的问题中提到一个关于对话的词(除了标签......)。请参阅下面的答案。
  • 因为问题更多是在 autocomplete 之外捕获事件,如果是这样的话......关闭 autocomplete。

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


【解决方案1】:

我遇到了同样的问题。你只需要做一件小事。 调用“搜索”方法后,设置焦点。 Esc 并在框外单击将关闭下拉菜单。

我正在使用类别子类 (http://jqueryui.com/demos/autocomplete/#categories) 所以我的代码看起来像

  $( "#search" ).catcomplete('search');
  $( "#search" ).focus();

我希望它在 .autocomplete 小部件上也能正常工作。

【讨论】:

  • 阅读接受的答案时,我发现这个问题的标题措辞不当。对于我遇到的更普遍且与对话框无关的问题,这是我需要的额外步骤。干杯。
  • 我试图解决的问题的确切解决方案!
【解决方案2】:

只需关闭对话框关闭时的自动完成:

$("#dialog").dialog({
    close: function() {
        $('#tags').autocomplete('close');
    }
});

查看实际操作:http://jsfiddle.net/william/3Yz9f/1/


更新

这取决于您所说的“一般”是什么意思。 JavaScript 非常面向事件。因此,最初,您希望在关闭对话框时关闭自动完成功能,因此是答案的第一部分。当然,您可以将其绑定到一些间接事件,例如自动完成模糊或隐藏(您可能需要为隐藏执行自定义事件),但这会给您带来一些风险,即它们可能不会被触发,因为它们是间接的.

现在您希望在拖动对话框时关闭它;好吧,这也不难;您可以使用对话框的dragStart 事件来实现这一点,但它们是两个不同的事件,都在对话框中,而不是自动完成。拖动对话框时,我在自动完成小部件本身上看不到任何间接事件。

如果您的问题是通过 ID 引用自动完成小部件,您可以使用基于上下文的选择器,例如在对话框的事件处理程序中使用$('.ui-autocomplete-input', this) 而不是$('#tags')

【讨论】:

  • 是一个很好的解决方案并且有效。看起来更笼统,不是在对话框中定义关闭,而是在自动完成中。
  • 因为解决了其中一个问题,比如点击拖动对话框,他没有关闭。
  • 这是我已经想到的解决方案,但是谢谢......(暂时)没有看到更好的方法,没有使用 dragstart 和 close 功能。不过谢谢
  • 嗯....如果您在问题中说明您尝试过的内容会很好,这样可以使这个过程更有效率。
  • 我完成了在 dragStart 和关闭对话框上的使用,自动完成“关闭”,将起作用。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-04
  • 2017-08-14
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
相关资源
最近更新 更多