JQuery Автозаполнение странное поведение фокуса - PullRequest
0 голосов
/ 04 февраля 2010

Я пытаюсь показать данные в одном раскрывающемся меню автозаполнения 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 ), но она тоже не работает.

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

1 Ответ

0 голосов
/ 04 февраля 2010

Работает ли он без таймера?

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

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

var selected = false;

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

ваш receiveItem выглядит так:

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