在ASP.NET页面中使用jQuery查找文本框

时间:2010-02-28 23:55:51

标签: c# asp.net jquery

我在页面上有<asp:TextBox runat="server" ID="lastName" />,我想用jQuery设置焦点,但它没有返回它。我的代码是这样的:

$.ready() {
    var tb = $('lastName').focus(); // don't work, why?
}

3 个答案:

答案 0 :(得分:12)

您需要解决两个不同的问题:格式错误的选择器以及ASP.NET客户端ID中的与服务器ID 不匹配的事实。

你想要的是:

$.ready() {
    $('#<%= lastName.ClientID %>').focus();
}

让我们分解......

首先,在jQuery中,通过它的id属性访问元素的选择器需要以“#”符号开头。因此访问者看起来应该更像:{{1} }。 jQuery中的选择器类似,但比CSS更强大。您可以在jQuery API站点上熟悉selector syntax

其次,使用ASP.NET,分配给HTML元素的id通常与识别服务器上的asp控件的id不同。这是因为ASP.NET需要确保所有元素是唯一标识的 - 并且不会与可能在母版页,用户控件或重复的内容部分中定义的名称发生冲突。这些ID往往很长并且通常无法预测 - 幸运的是,我们可以将$('#lastName')代码扩展与控件的<%= %>属性一起使用,以便为HTML元素插入适当的id而无需了解ASP.NET如何分配唯一ID的详细信息。

在ASP.NET 4.0中,现在可以直接指定客户端ID,这有助于避免上面显示的技术。

答案 1 :(得分:1)

这是我用于在具有母版页的页面中选择服务器控件的函数。它在所有情况下都不起作用,例如嵌套控件,但对于更简单的东西,它真的很方便。

这可以在某个地方的主页上进行

<script type="text/javascript">
    baseName = "<%= Content.ClientID %>_";
</script>

使用此功能,您可以使用GetServerElementById(“lastname”)

function GetServerElementById(id) {
   return $("#" + baseName + id);
}

答案 2 :(得分:1)

您可以执行部分​​属性查询:

<script type="text/javascript">

$(function(){

        $('#btnExtract').click(
            function() {
                alert($("input[id$='txtMessage").val());
            }
        );

    });

Selecting ASP.NET Web Controls in jQuery