在页面回发后将焦点设置到文本框末尾?

4
我有一个简单的ASP.Net表单,其中包含txtBox和btn。
用户点击btn,在postback中向ASP:TextBox添加文本(添加已知的“起始文本”)。
在postback之后,我希望焦点集中在文本框中的文本末尾。
如果调用Page.SetFocus(...)或txtBox.Focus(),则txtBox会获得焦点,但位于文本开头-这意味着如果用户开始键入,他们将处于错误的位置。
例如:
cursor100-01
希望它是:
100-01cursor 我在文本框中尝试了以下内容:
onfocus="alert('focus');this.value = this.value;"

但是“警报”只出现了前两次,之后就没有出现了?

请勿重复发布同一问题:http://stackoverflow.com/questions/4033141/set-focus-in-textbox-after-postback您可以随时编辑您的问题。有关更多信息,请查看此主题:http://meta.stackexchange.com/questions/7046/how-to-get-attention-for-your-old-unanswered-questions - Tim Schmelter
1个回答

4

我在asp.net 网站找到了一个解决方案(请查看相关讨论,以了解所给出的解决方案的跨浏览器版本!)

以下是可以实现此功能的 JavaScript 代码:

<script type="text/javascript">
        function SetCursorToTextEnd(textControlID)
        {
            var text = document.getElementById(textControlID);
            if (text != null && text.value.length > 0)
            {
                if (text.createTextRange)
                {
                    var FieldRange = text.createTextRange();
                    FieldRange.moveStart('character', text.value.length);
                    FieldRange.collapse();
                    FieldRange.select();
                }
            }
        }
</script>

我该如何从回发中调用它呢? - BlueChippy
1
我会将这个函数绑定到onFocus事件处理程序上,就像你的例子中一样。 - zgorawski
以上错误有时会在以下行出现:FieldRange.select(); - Zeek2
有人知道我怎么在vb.net中做同样的事吗?我遇到了同样的问题。 - Priya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接