Как мне указать, в каком порядке происходит событие? - PullRequest
0 голосов
/ 31 октября 2011

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

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

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

EDIT:

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

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

Ответы [ 3 ]

0 голосов
/ 31 октября 2011

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

0 голосов
/ 31 октября 2011

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

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

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

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

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

НТН Alex

0 голосов
/ 31 октября 2011

Прочитайте эту статью: http://www.quirksmode.org/js/events_order.html Для этого вы найдете три разных решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...