检测 jQuery UI 自动完成

Posted

技术标签:

【中文标题】检测 jQuery UI 自动完成【英文标题】:Detecting jQuery UI autocomplete 【发布时间】:2010-09-20 06:21:49 【问题描述】:

如何检测输入框当前是否为 jQuery UI 自动完成?似乎没有本机方法,但我希望有这样简单的东西:

if ($("#q").autocomplete)

  //Do something

然而,这个条件似乎总是返回 true。

【问题讨论】:

【参考方案1】:
if ($("#q").hasClass("ac_input")) 
    // do something

更新

JQuery UI 自动完成小部件中的类名现在是“ui-autocomplete-input”,因此代码将是:

if ($("#q").hasClass("ui-autocomplete-input")) 
    // do something

【讨论】:

【参考方案2】:

您还可以通过以下代码行找到附加到输入元素的自动完成行为:

if ($('Selector').data('autocomplete')) 

【讨论】:

【参考方案3】:

如果页面已经包含了自动完成 jquery UI 插件,并且您只是想查看是否已为特定(输入)元素设置了自动完成功能,您可以使用 官方 API 方法 如下图:

if ($("#q").autocomplete("instance")) 
    console.log("autocomplete already setup for #q");
 else 
    console.log("NO autocomplete for #q");

更多详情请关注http://api.jqueryui.com/autocomplete/#method-instance

【讨论】:

【参考方案4】:

你可以使用

if( $.isFunction( $.fn.autocomplete ) ) 

.isFunction 是 jQuery 库的一部分。 (引用:http://james.padolsey.com/jquery/....isFunction)

【讨论】:

这只是检查autocomplete 是否作为函数存在,这意味着自动完成插件已加载到内存中。但这不是问题要问的。【参考方案5】:

这是真的,因为一旦你包含了自动完成 js,每个 $() 对象现在都定义了一个 autocomplete() 方法(如果你想为这些元素激活自动完成)。您的 if() 只是说该函数不为空。

不幸的是,我没有可以检查此内容的系统(今天将笔记本电脑留在家中),但我相信自动完成功能会为其使用的元素添加一个 css 类名称。你可以找那个。

【讨论】:

以上是关于检测 jQuery UI 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

jquery UI 自动完成:我克隆的自动完成字段不起作用

jQuery-ui 自动完成,选择第一项

如何实现类似于 jQuery UI 自动完成的 Dojo 自动完成?

jQuery UI 自动完成与类似 Chrome 的自动填充

单独更改 jquery-ui 自动完成小部件的宽度

jQuery UI - 加速自动完成