在回发后将焦点设置为文本框中的文本结尾?

时间:2010-10-27 11:55:54

标签: javascript asp.net

我有一个简单的ASP.Net表单,包含txtBox和btn 用户单击btn,它会在回发中添加文本到ASP:TextBox(它添加一个已知的“起始文本”。
在回发之后,我希望将焦点设置到文本框中文本的末尾。

如果我调用Page.SetFocus(...)或txtBox.Focus(),那么txtBox会获得焦点,但是在文本的开头 - 这意味着如果用户开始输入,他们将在错误的位置

e.g。
cursor 100-01

希望它是

100-01 cursor

我在文本框中尝试了以下内容:

onfocus="alert('focus');this.value = this.value;"

但“警报”只出现在前两次?什么都没有?

1 个答案:

答案 0 :(得分:5)

我在asp.net website中找到了一个解决方案(请查看有关给定解决方案的跨浏览器版本的讨论!)

有javascrip代码可以执行此操作:

<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>