如何在添加到元素后删除自动完成?

问题描述 投票:17回答:8

在我向以下元素添加自动完成后:

commObj=$("#communityName").autocomplete("auto_commName_backend.php",
                {'onItemSelect': handleItemSelect}, {'extraParams': 'ndo' + ndo});

有没有办法可以禁用它或动态删除元素的自动完成?

我正在使用Dylan Verheul的修改过的jquery自动完成插件。 http://www.pengoworks.com/workshop/jquery/autocomplete_docs.txt

jquery autocomplete
8个回答
44
投票

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

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

11
投票

我找到的最简单,最安全的方法是:

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

或者,如前所述,这也有效:

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

如果您确定您的控件具有自动完成处理程序集。


2
投票

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

相反,检查ui-autocomplete-input类的存在返回true。

我相信以下内容应该足够了。

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

0
投票

如果您向元素添加类似“EnableAC”的类,则可以将该类作为自动完成的目标。当您完成自动完成并想要禁用它时,您将删除该类。

为什么要禁用该功能呢?如果用户想要更改他们的选择并且自动填充不会触发,则可能会使用户感到困惑。


0
投票

我刚刚简要介绍了插件的js文件。

在初始化jquery.autocomplete.js插件期间似乎有一个javascript行(编号21),它将原始源输入设置为:

input.autocompleter = me;

没有测试,也许您可​​以简单地调用以下内容来删除插件和原始输入之间的链接?

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

0
投票

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


0
投票

我刚试过$('#')。autocomplete = null;它的工作原理。我允许改变苍蝇的名称,结果不会显示,现在确实如此。旧的未更改的名称将在此之前显示新的名称


0
投票

按元素ID禁用自动填充:

 $("#elementId").autocomplete({
  disabled: true
  });
© www.soinside.com 2019 - 2024. All rights reserved.