Как мне указать, в каком порядке запускается событие?

#jquery #javascript-events

#jquery #javascript-события

Вопрос:

У меня есть объект autocompleteextender, который отображает результаты для двух текстовых полей при вводе в них. Когда вы нажимаете enter или tab, он должен выбрать элемент в autocompleteextender, а затем запустить событие keydown в текстовом поле для выполнения некоторых вызовов ajax.

Проблема в том, что иногда событие нажатия клавиши в текстовом поле запускается до автозаполнения, что означает, что текст в текстовом поле не был обновлен при выполнении ajaxcall .

Можно ли как-нибудь указать, в каком порядке будут запускаться эти события?

Редактировать:

Спасибо за все ответы, однако доступные решения стали совершенно устаревшими, как только я обнаружил свойство OnClientItemSelected . Я мог бы просто указать это на функцию js, которую я хотел запустить.

Я не ответил на свой собственный вопрос, поскольку вопрос касался упорядочения событий.

Ответ №1:

Вы можете удалить обработчик события Keydown, а затем повторно назначить его после запуска события autocompleteextender.

Ответ №2:

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

Можете ли вы добавить пользовательское событие в текстовое поле, например

 $("txtBox").bind("afterAutoComplete", existingKeyDownHandler);
 

а затем в функции запроса автозаполнения просто запустите это?

 $("textBox").autocomplete(...).result(function(event, item) {
    // do other stuff if required, or simply just trigger the event
    $(this).trigger("afterAutoComplete");
});
 

HTH
Alex