如何指定触发事件的顺序?

时间:2011-10-31 11:21:49

标签: jquery javascript-events

我有一个autocompleteextender对象,当您输入两个文本框时,它会显示两个文本框的结果。当您按Enter或tab时,它应该选择autocompleteextender中的项目,然后在文本框上触发keydown事件以执行一些ajax调用。

问题是有时文本框上的keydown事件是在autocompleteextender之前触发的,这意味着在创建ajaxcall时文本框中的文本尚未更新。

无论如何都要指定这些事件将以什么顺序被触发?

编辑:

感谢所有答案,但是一旦我发现了OnClientItemSelected属性,可用的解决方案就变得过时了。我可以指出我想触发的js函数。

我没有回答我自己的问题,因为问题是关于事件排序。

3 个答案:

答案 0 :(得分:0)

阅读那篇文章: http://www.quirksmode.org/js/events_order.html 你会发现三种不同的解决方案。

答案 1 :(得分:0)

您可以删除Keydown事件处理程序,然后在触发autocompleteextender事件后重新分配它。

答案 2 :(得分:0)

我假设自动完成请求正在运行异步,因此您遇到的问题是,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");
});

HTH 亚历