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

mso*_*hie 4 c# asp.net jquery

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

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

LBu*_*kin 12

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

你想要的是:

$.ready() {
    $('#<%= lastName.ClientID %>').focus();
}
Run Code Online (Sandbox Code Playgroud)

让我们分解一下......

首先,在jQuery中,通过它的id属性访问元素的选择器需要以"#"符号开头.所以访问者看起来应该更像:$('#lastName').jQuery中的选择器类似,但比CSS更强大.您可以熟悉jQuery API站点上的选择器语法.

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

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

  • 你可以做我工作中的"首席开发人员":用ASP.NET生成的完整客户端id替换所有正确编码的`<%= lastName.ClientID%>`标签,然后想知道为什么可重复使用的控件不再可重复使用; D. (2认同)