2010-06-23 37 views

回答

40

可以使用的代码下面的行删除自动完成的行为:

if (jQuery(control).data('autocomplete')) { 
    jQuery(control).autocomplete("destroy"); 
    jQuery(control).removeData('autocomplete'); 
} 
+0

非常感谢!这是我在几个小时后的解决方案。有用! – 2012-11-22 12:37:43

+0

我认为这行关于removeData是不需要的。我测试了,在做$(control).autocomplete('destroy')后,$(control).data('autocomplete')返回undefined – Fractalf 2013-12-02 16:22:41

+0

我使用的是(1.11),.data()总是返回undefined。忽略条件并且围绕调用自动完成(“destroy”)放置try/catch会更安全。 – cleong 2014-07-17 09:17:38

0

该插件将自己连接到<input>相当紧密。如果是我的网页,我想我只需要两个标签具有相同的“名称”,一个带有自动完成,另一个没有。当我想在它们之间切换时,我会使其中一个禁用并隐藏,并启用/显示另一个。 (编辑哦,并且确保字段的值在它们切换时来回复制)

0

如果向元素中添加类似“EnableAC”的类,则可以将该类定位到自动完成。当您完成自动填充并希望将其禁用时,可以删除该类。

为什么要禁用该功能?如果他们想要更改他们的选择并且自动完成功能不会触发,它可能会混淆您的用户。

+1

我不确定这会起作用,因为一旦插件绑定到'',将会有几个事件处理程序保留。 – Pointy 2010-06-23 14:21:29

0

我刚刚简要了解了插件的js文件。

有似乎是jquery.autocomplete.js插件的初始化过程中一个javascript线(21号)所述始发源输入设置为:

input.autocompleter = me; 

未经测试,也许你可以简单地再请调用以下内容来删除插件和原始输入之间的链接?

$('#<your input id>').autocompleter = null; 
+0

*可能*工作,但该脚本还绑定了一堆事件处理程序。 – Pointy 2010-06-23 14:20:50

+0

是的,就像我说的,我没有太多机会去研究它,因为我很匆忙,但它可能是P Coder研究的一个很好的起点。我可以看到插件脚本中没有本地销毁功能。 – 2010-06-24 10:38:41

0

我只是想 $( '#')自动完成= NULL; 它工作。 我让苍蝇的名字改变,结果不会显示,现在它显示。 旧不变名称将显示之前现在新的人做

8

我发现的最简单,最安全的方法是:

$(control).autocomplete({source: []}); 

另外,如之前提到的,这也适用:

$(control).autocomplete("destroy"); 

如果你确定你的控件有一个自动完成处理程序集。

+0

这里的第一个选项对我来说非常完美。我动态地生成“促销代码”,选择一个后,我想删除选择其他任何东西的能力,除非添加的促销被删除,所以:$('#tags_promo')。autocomplete('option','source ',[]);添加促销和$('#tags_promo')。autocomplete('option','source',availablePromo);在删除。谢谢你,我试图做各种复杂的东西,而不是这个! – kyle 2013-09-10 15:10:56

+0

第一个选项的魅力。 – 2014-06-16 21:45:52

+0

正是我需要的 – 2016-07-28 13:42:12

0

在最新版本的jQuery UI(1.12)中,即使存在自动完成数据,$(control).data('autocomplete')也不会返回true。

取而代之,检查ui-autocomplete-input类的存在是否返回true。

以下应该就够了,我相信。

if ($(control).hasClass('ui-autocomplete-input')) { 
    $(control).autocomplete("destroy"); 
} 
相关问题