对于我的文本框,在我的本地生成了以下ID。
ctl00_ContentPlaceHolder1_ucLogin1_txtUserName
当我在IIS上托管时,会生成以下ID。
ContentPlaceHolder1_ucLogin1_txtUserName
如何获取文本框ID?不要将答案回复为使用ClientID
,现在我正在使用外部javascript文件。它不支持ClientID
。
答案 0 :(得分:7)
如果您使用的是ASP.NET 4.0,则可以将文本框的ClientIDMode设置为Static
,其ID始终相同。
示例:
<asp:TextBox ID="txtUserName" runat="server" ClientIDMode="Static" />
答案 1 :(得分:2)
你可以使用那个jquery
var clientId =$('input[id*="txtUserName"]').attr("id");
记住; 'input [id * =“txtUserName”]'选择id为id的所有输入元素都有“txtUserName”。
答案 2 :(得分:1)
您必须使用ClientID,但您可以做的是在页面上使用一小部分javascript将变量设置为传递的ClientID,以便与外部脚本一起使用。
如果您使用.Net Framework的第4版,则可以将ClientIDMode设置为Static,这样您就无法控制ID生成。见http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx
答案 3 :(得分:1)
有很多方法可以解决这个问题,但是可以快速实现的方法是只需在此TextBox中添加一个独特的CSS类。
这允许您通过使用一些JavaScript客户端框架(如jQuery)在其客户端检索此TextBox:
$("input.MyTextBoxCssClass")
另一种方法,如果你在ASP.NET 4.0中是 bniwredyc 在他的回答中提出的方法。
答案 4 :(得分:1)
您有两种选择:
如果您的目标是ASP.NET 4.0,则可以显式使用set ID。 Here是如何完成的示例。
另一种选择是将TextBox ID作为参数传递给javascript函数,并在调用javascript函数时使用“ClientID”方法。 Here是一个类似的问题。
答案 5 :(得分:1)
您应该选择文本框而不使用其ID。尝试在文本框中添加一个类并选择:
<asp:TextBox ID="txtUserName" runat="server" CssClass="txtUserNameClass"/>