我有一个autocompleteextender对象,当您输入两个文本框时,它会显示两个文本框的结果。当您按Enter或tab时,它应该选择autocompleteextender中的项目,然后在文本框上触发keydown事件以执行一些ajax调用。
问题是有时文本框上的keydown事件是在autocompleteextender之前触发的,这意味着在创建ajaxcall时文本框中的文本尚未更新。
无论如何都要指定这些事件将以什么顺序被触发?
编辑:
感谢所有答案,但是一旦我发现了OnClientItemSelected属性,可用的解决方案就变得过时了。我可以指出我想触发的js函数。
我没有回答我自己的问题,因为问题是关于事件排序。
答案 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 亚历