Javascript 设置始终关注文本框(ASP.NET、Updatepanel)

Javascript 设置始终关注文本框(ASP.NET、Updatepanel),javascript,asp.net,updatepanel,Javascript,Asp.net,Updatepanel,哎,, 在我开始写我的问题之前,我会原谅我的英语不好,我希望你能理解我 我在ASP.NET Web应用程序中有一个AJAX Updatepanel。在这个Updatepanel中是一个 用于动态搜索结果的文本框。当我开始在文本框中写东西时,结果就像谷歌建议一样 现在,焦点必须始终放在文本框(inputn字段)上,现在显示用户单击的位置 当前,当用户开始键入时,ASP.NET updatepanel在几秒钟后刷新 感谢帮助:-)当updatepanel完成更新的html dom时会发生一个事件 S

哎,, 在我开始写我的问题之前,我会原谅我的英语不好,我希望你能理解我

我在ASP.NET Web应用程序中有一个AJAX Updatepanel。在这个Updatepanel中是一个 用于动态搜索结果的文本框。当我开始在文本框中写东西时,结果就像谷歌建议一样

现在,焦点必须始终放在文本框(inputn字段)上,现在显示用户单击的位置

当前,当用户开始键入时,ASP.NET updatepanel在几秒钟后刷新


感谢帮助:-)

当updatepanel完成更新的html dom时会发生一个事件

Sys.WebForms.PageRequestManager.getInstance().add_endRequest
试试这个

function EndRequestHandler() {  
//get focus on the textbox
myTextbox.focus(); }

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

这很有趣,但这里有一个可能的解决方案。其思想是:如果用户离开文本框(onblur),那么将其带回文本框(focusOnTxt函数):

页面中的简单SetFocus f.e.加载应能工作:

ScriptManager1.SetFocus(TextBox1.ClientID)

更新:根据以下工作

将此脚本添加到页面头部的脚本块中:

function SetEnd(TB){
    if (TB.createTextRange){
        var FieldRange = TB.createTextRange();
        FieldRange.moveStart('character', TB.value.length);
        FieldRange.collapse();
        FieldRange.select();
    }
}
然后将onfocus事件添加到文本框:

onfocus="SetEnd(this)"
在codebehind的页面中。Load或TextChanged事件处理程序添加标准的SetFocus调用:

ScriptManager sm = ScriptManager.GetCurrent(this);
sm.SetFocus(myTextBox)

我不太确定这个答案,但是在Page_load事件中将焦点放在控件上时会发生什么情况?焦点必须始终在用户单击的文本框中..您好,谢谢帮助,问题是整个文本都被选中了。您使用的是sender.value=sender.value;?它应该防止全文选择。我已经测试过我的解决方案在chrome上有问题。是的。chrome的问题不适合我。我必须只支持IE7和IE8。这里是我的文本框的快捷方式。我希望它能帮上忙:嘿,蒂姆,问题来了。当我编辑文本时,光标会跳到末尾。用户必须能够编辑文本。示例:我输入了Stackowerflow,并将其更正为stackoverflow。在您的示例中,光标总是跳到文本的末尾。蒂姆,是什么改变了这种效果?ScriptManager sm=ScriptManager.GetCurrent(此);sm.SetFocus(myTextBox)@Patrik:我的更改与您在编辑时保持光标位置的问题无关。对不起,目前我没有时间深入探讨这个问题。这对我来说很有效。最后,我在脚本块的
pageLoad
函数中包装了这段代码。
onfocus="SetEnd(this)"
ScriptManager sm = ScriptManager.GetCurrent(this);
sm.SetFocus(myTextBox)