无法将输入字段集中在装有ajax调用的DOM中

jes*_*cah 3 javascript jquery javascript-events

我疯了,试图找出如何使这项工作.代码看起来大致如下:

function onDropDownChanged() {
  $("#updatePanel").load(
    "myUrl",
    { id: $("#myDropDown option:selected").val() },
    onPanelLoaded
  );
}
function onPanelLoaded() {
  $("#theTextInput").focus();
}
$(document).ready(function() {
  $("#myDropDown").change(onDropDownChanged);
}
Run Code Online (Sandbox Code Playgroud)

第一次触发更改处理程序时,它会执行ajax更新,并且文本框会被聚焦.

但是,在后续更改中,它继续执行ajax更新,但文本框永远不会再次聚焦.

我发现,如果在onDropDownChanged,我$("#updatePanel").empty()在ajax调用之前添加,文本框将始终聚焦.问题是整个表格消失一秒钟,导致丑陋的闪光.鉴于ajax应该让这样的事情很好,这不是我想要使用的解决方法.

tva*_*son 6

它似乎应该工作,但我想知道在调用回调时DOM是否未更新.您可能想看看引入延迟是否有帮助.

function onPanelLoaded() {
     setTimeout( function() { $("#theTextInput").focus(); }, 500 );
}
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,在页面上包含HTML以及通过load()返回的内容将会很有帮助.