JQuery Autocomplete странное поведение фокуса

Я пытаюсь показать данные в одном раскрывающемся списке автозаполнения JQuery. Информация извлекается из одного динамического ASPX:

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')

Очевидно, я не хочу делать больше GET, чем необходимо, поэтому у меня есть немного контроля с помощью таймера Java (при каждом нажатии клавиши):

if (timerActive) {
    stopTimer();
}

timer = setTimeout('obtainItems()', 800);
timerActive = true;

И получение предметов делает:

$("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')
stopTimer();

В целом эта штука работает, но я видел некоторые особенности поведения со стрелками и AvPag. Когда отображаются записи выпадающего списка, если я нажимаю AvPag, компонент выбирает правильную запись, но через две секунды возвращается к предыдущей.

Моя первая теория заключалась в том, что .autocomplete сбрасывал фокус, но я заметил, что это неверно. Я думал, что это ошибка (BUG LINK ), но это тоже не работает.

Пожалуйста, если кто-то может помочь... большое спасибо!


person user256038    schedule 04.02.2010    source источник
comment
Вы ЗНАЕТЕ, что в автозаполнении есть возможность отложить получение на основе нажатия клавиш? , задержка: 900   -  person Mark Schultheiss    schedule 05.02.2010


Ответы (1)


Работает ли он как хотелось бы без таймера?

Я предполагаю, что ваше событие onkeypress запускается, пользователь выбирает то, что он хочет, затем срабатывает событие таймера, которое сбрасывает элементы.

добавить переменную

var selected = false;

и прикрепите выбранное событие к вашему автозаполнению и установите selected = true

ваш obtainItem должен выглядеть так:

function obtainItems()
{
    if (!selected)
    {
        $("#<%= this.txt.ClientID %>").autocomplete('<%=this.ResolveUrl("~/Page.aspx") %>')
        stopTimer();
    }
}
person hunter    schedule 04.02.2010