将文本框和位置光标聚焦在页面加载上

时间:2015-04-14 18:01:14

标签: c# jquery asp.net

所以我想在页面加载后将光标位置设置到文本框的末尾。我有这个JQuery的代码:

            <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script src="https://rawgit.com/ichord/Caret.js/master/src/jquery.caret.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
            var textbox = $('#MessagesBox');
            textbox.focus();
            textbox.caret('pos', textbox.val().length);
    });
</script>

<asp:TextBox ID="MessagesBox" runat="server" TextMode="MultiLine"
style="resize:none" ReadOnly="true" Width="300" Height="200"></asp:TextBox>

我错过了什么?我是否还需要在代码存储中设置一些内容?

2 个答案:

答案 0 :(得分:2)

您的问题是文本框的ID不会保留MessagesBox,因为它是服务器控件。 ASP.NET更改它并为其提供客户端ID。您需要使用客户端ID或使用其他属性来标识jquery中的文本框。您可以使用Chrome中的Inspect元素验证控件的名称。

您可以使用它来通过其客户端ID

来识别控件
var textbox = $("#'<%=MessagesBox.ClientID %>'");

或者,您可以访问服务器端的控件的客户端ID,然后可以使用该客户端ID从服务器创建和注册脚本。

答案 1 :(得分:0)

试试这个:

$(document).ready(function(){
    var el = $("#MessagesBox");
    var elemLen = el.value.length;

    el.selectionStart = elemLen;
    el.selectionEnd = elemLen;
    el.focus();
});​