C# 聚焦文本框并将光标定位在页面加载上

C# 聚焦文本框并将光标定位在页面加载上,c#,jquery,asp.net,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 typ

因此,我想在页面加载后将光标位置设置为文本框的末尾。我有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>

$(文档).ready(函数(){
var textbox=$(“#MessagesBox”);
textbox.focus();
textbox.caret('pos',textbox.val().length);
});

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

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

您可以使用它通过其客户端ID来标识控件

var textbox = $("#'<%=MessagesBox.ClientID %>'");
var textbox=$(“#”);
或者,您可以在服务器端访问控件的客户端ID,然后使用该ID从服务器创建和注册脚本。

尝试以下操作:

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

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

请显示文本框的aspx代码。这似乎很好->@PraveenPaulose-这是文本框的代码:focus()或caret()是否有问题?文本框是否在另一个服务器控件中,也称为,文本框的ID是否真的是客户端的MessagesBox?这真的很烦人,但不幸的是,添加后仍然无法工作。请删除ReadOnly属性并检查当您使用Inspect元素查看控件时,Chrome中显示的id是什么?它说id=“MessagesBox”您是否已将ClientMode设置为静态?非常感谢,它工作了!(文本框现在看起来像这样:)@kisbovan93它正在工作,因为您将clientdmode设置为static,而不是其他任何东西。你有两个选择1。要么将ClientMode设置为static,要么使用ClientID。@PraveenPaulose我认为问题不在于文本框id,而是用于在末尾设置插入符号的javascript代码检查作为@Jonesy注释的Plunker。它使用相同的代码。那就必须是身份问题了。