JQuery Autocomplete: как обновить список?

У меня есть форма с переменным числом полей автозаполнения, которые используют один и тот же список выбора. Эти поля добавляются и удаляются по мере необходимости. Всякий раз, когда изменяется параметр на странице, я (попробуйте) обновить список для всех полей, сначала вызвав unbind(), затем autocomplete() с новым параметром, добавленным к URL-адресу.

$('input.foo').unbind().autocomplete(url?new_param=bar);

Проблема заключается в том, что unbind(), похоже, не развязывает. Когда я ввожу в поле ввода, он пропускает всю историю событий автозаполнения.

Я также попробовал flushCache безрезультатно.

Как удалить старые события?

Спасибо.

Ответ 1

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

Ответ 2

Попробуйте это

$ ('input.foo').unbind('.autocomplete').autocomplete ('url?new_param=bar') ;

Ответ 3

Плагин автозаполнения добавляет функцию unautocomplete() для удаления autocomplete() из полей, которые у нее есть, поэтому она должна работать, если изменить код:

$('input.foo').unautocomplete().autocomplete('url?new_param=bar');

Эта функция unautocomplete() должна удалить все старые события.

Ответ 4

jQuery предоставляет метод flushCache() (http://docs.jquery.com/Plugins/Autocomplete), чтобы удалить содержимое, уже сопоставленное с помощью автозаполнения.

Например, если используемый элемент html равен <input type="text" id="txtElement"/>, и с ним связано автозаполнение. FlushCache может быть задан следующим образом: $("#txtElement").flushCache();, и это решит проблему.

Ответ 5

Если вы используете параметры, добавьте cacheLength и установите его в 1. Этот параметр не сохранит ни одну из возвращенных записей. Поверьте мне, это улучшило мою жизнь... на все 5 минут.

Ответ 6

Я думаю, ваша проблема в том, что у вас нет формы, содержащей поле ввода автозаполнения. Если вы посмотрите в коде jquery.autocomplete.js, он $(input.form).unbind( ". Autocomplete" ); на unautocomplete(), что означает, что вход должен находиться внутри тега формы, чтобы работать.