Как удалить автозаполнение после добавления в элемент? - PullRequest
17 голосов
/ 23 июня 2010

После добавления автозаполнения к элементу, подобному:

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

Есть ли способ, которым я мог бы отключить его или удалить автозаполнение для элемента динамически?

Я использую модифицированный jqueryплагин автозаполнения от Dylan Verheul.http://www.pengoworks.com/workshop/jquery/autocomplete_docs.txt

Ответы [ 8 ]

44 голосов
/ 05 июля 2011

Вы можете удалить поведение автозаполнения, используя следующую строку кода:

if (jQuery(control).data('autocomplete')) {
  jQuery(control).autocomplete("destroy");
  jQuery(control).removeData('autocomplete');
}
11 голосов
/ 31 июля 2013

Самый простой и безопасный способ, который я нашел, это:

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

В качестве альтернативы, как упоминалось ранее, это также работает:

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

Если вы уверены, что в вашем элементе управления установлен обработчик автозаполнения.

2 голосов
/ 29 сентября 2016

В последней версии пользовательского интерфейса jQuery (1.12) $(control).data('autocomplete') не возвращает true, даже если присутствуют данные автозаполнения.

Вместо этого проверка на наличие класса ui-autocomplete-input возвращает true.

Следующего должно быть достаточно, я считаю.

if ($(control).hasClass('ui-autocomplete-input')) {
   $(control).autocomplete("destroy");
}
0 голосов
/ 25 апреля 2019

Отключить автозаполнение по идентификатору элемента:

 $("#elementId").autocomplete({
  disabled: true
  });
0 голосов
/ 26 февраля 2013

Я только что попытался $ ('#'). Autocomplete = null;и это работает.Я позволял смену имени мухи, и результат не показывал бы, теперь это делает.Старое неизмененное имя будет отображаться раньше, а новое -

.
0 голосов
/ 23 июня 2010

Я только что кратко посмотрел файл js для плагина.

Кажется, что во время инициализации плагина jquery.autocomplete.js, который устанавливает исходный исходный ввод как:

input.autocompleter = me;

Без тестирования, может быть, вы могли бы просто вызвать следующее, чтобы удалить связь между плагином и исходным вводом?

$('#<your input id>').autocompleter = null;
0 голосов
/ 23 июня 2010

Если вы добавите класс, например «EnableAC», к вашему элементу, вы можете выбрать этот класс для автозаполнения. Когда вы завершите автозаполнение и захотите отключить его, вы удалите этот класс.

Почему вы хотите отключить эту функцию? Это может сбить с толку ваших пользователей, если они захотят изменить свой выбор, и автозаполнение не сработает.

0 голосов
/ 23 июня 2010

Этот плагин довольно плотно подключается к <input>.Если бы это была моя страница, я бы подумал, что у меня было бы два тега с одним и тем же именем, один с автозаполнением и один без.Когда я хотел переключаться между ними, я делал один отключенным и скрытым и включал / показывал другой.( edit oh, а также убедитесь, что значения полей копируются туда и обратно при переключении)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...