Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何指定事件的触发顺序?_Jquery_Javascript Events - Fatal编程技术网

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

Jquery 如何指定事件的触发顺序?,jquery,javascript-events,Jquery,Javascript Events,我有一个AutoCompleteXtender对象,当您键入两个文本框时,它会显示两个文本框的结果。按enter键或tab键时,它应在AutoCompleteXtender中选择该项,然后在文本框中触发keydown事件以执行一些ajax调用 问题是,有时文本框上的keydown事件在AutoCompleteXtender之前触发,这意味着在进行ajaxcall时文本框中的文本尚未更新 是否需要指定触发这些事件的顺序 编辑: 感谢所有的答案,但是一旦我发现OnClientItemSelected

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

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

是否需要指定触发这些事件的顺序

编辑:

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


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

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

我假设autocomplete请求是异步运行的,因此,您遇到了这样一个问题: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");
});
嗯 亚历克斯