jquery.autocomplete возвращает недействительное предыдущее предложение на вкладке - PullRequest
4 голосов
/ 21 августа 2010

Я использую jQuery Autocomplete , и пользователи видят следующее поведение:

  1. Пользователь начинает вводить строку и появляются предложения
  2. Пользователь продолжает печатать, пока никакие предложения больше не действительны (и выпадающий список не исчезает)
  3. вкладка "Хиты пользователя"
  4. Автозаполнение заполняет поле недействительным предыдущим предложением, стирая то, что набрал пользователь

Есть идеи?

Это код Javascript (из шаблона Django):

$("#id_name").autocomplete("{% url name_autocomplete %}", {
     formatItem: function(data, i, n, value) {
         values = value.split(",,");
         return values[0];
     },
     formatResult: function(data, value) {
         return value.split(",,")[1];
     },
     highlight: false
});

1 Ответ

1 голос
/ 22 ноября 2010

Вы уверены, что описанное поведение точно , что делают пользователи? Я спрашиваю только потому, что, по-видимому, если вы наберете автозаполняемый термин, прокрутите вниз до опции , наберите достаточно, чтобы создать недопустимый термин, и очень быстро нажмите клавишу табуляции, а затем выделенный 1006 * предложение «отправлено». Кажется, что есть состояние гонки, когда к вашему поведению добавлен «шаг 1.5»: «Пользователь нажимает стрелку вниз, чтобы выделить предложение».

Если поведение действительно точно такое, как вы описали, вы можете рассмотреть возможность использования автозаполнения в jQuery UI. Похоже, что версия автозаполнения, на которую вы ссылались, устарела. Я провел быструю проверку нескольких различных реализаций автозаполнения пользовательского интерфейса jQuery, и они, по-видимому, не демонстрируют описанное вами поведение.

В качестве альтернативы может появиться обновление для версии, с которой вы связались по адресу https://github.com/agarzola/jQueryAutocompletePlugin. Отчеты об ошибках и исправления не очень хорошо документированы, но, возможно, они исправили вашу проблему в обновлении (прямо или косвенно) .)

...