我知道这个问题已经被问了很多次了,但我找到的每一个解决方案都没有解决我的问题。
在我的页面中,我正在动态创建多个具有 3 列的 GridView,然后将它们添加到我的更新面板中。我用具有 TextChanged 事件和自动回发 = true 的文本框填充了第 3 列。现在,当用户按 tab 键时,将触发 TextChanged 事件。但焦点消失了。我希望它在我按 tab 键时移动到下一个文本框,但它只是消失了。
我尝试在更新面板上添加UpdateMode="Conditional" ChildrenAsTriggers="false"
,但没有奏效。
我也尝试使用这个javascript:
var postbackElement = null;
function SetFocusToNextControl(newTabIndex)
{
for (var i=0;i<=document.form1.elements.length;i++)
{
if (document.form1.elements[i].tabIndex == newTabIndex)
{
document.form1.elements[i].focus();
break;
}
}
}
function RestoreFocus(source, args)
{
document.getElementById(postbackElement.id).focus();
if (document.getElementById(postbackElement.id).type =='text')
SetFocusToNextControl(document.getElementById(postbackElement.id).tabIndex+1)
}
function SavePostbackElement(source, args)
{
postbackElement = args.get_postBackElement();
}
function AddRequestHandler()
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(RestoreFocus);
prm.add_beginRequest(SavePostbackElement);
}
当我第一次按 tab 键时,它起作用了,TextChanged 事件被触发,焦点设置在下一个文本框上。但是当我第二次按 tab 键时,焦点再次消失。它只工作一次。如何解决我的问题?
在文本框 TextChanged 事件的最后一个中。
textbox2.focus();