我疯狂地试图弄清楚如何使这项工作发挥作用。代码大致如下:
function onDropDownChanged() {
$("#updatePanel").load(
"myUrl",
{ id: $("#myDropDown option:selected").val() },
onPanelLoaded
);
}
function onPanelLoaded() {
$("#theTextInput").focus();
}
$(document).ready(function() {
$("#myDropDown").change(onDropDownChanged);
}
第一次触发更改处理程序时,它会进行 ajax 更新,并且文本框获得焦点。
然而,在随后的更改中,它继续进行 ajax 更新,但文本框再也不会获得焦点。
我发现如果在onDropDownChanged
,我补充说$("#updatePanel").empty()
在 ajax 调用之前,文本框始终会获得焦点。问题是整个形态会消失一秒钟,导致丑陋的闪光。鉴于 ajax 应该让事情变得如此美好,这不是我想要使用的解决方法。
看起来它应该可以工作,但我想知道调用回调时 DOM 是否没有更新。您可能想看看引入延迟是否有帮助。
function onPanelLoaded() {
setTimeout( function() { $("#theTextInput").focus(); }, 500 );
}
如果这不起作用,则在页面上包含 HTML 以及通过 load() 返回的内容会很有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)