我有一个带有输入元素的ASPX页面。在页面加载时,我设置该输入元素的值。稍后我尝试使用元素id(使用javascript)获取该字段的内容,但它失败,因为id已被更改。有没有办法阻止C#更改元素ID?
输入元素:
<input id="conferenceDate" runat="server" style="width:100%;" />
在Page_Load
功能中设置日期:
conferenceDate.Value = DateTime.Now.ToString();
元素值之后的ID已设置:
<input name="ctl00$PlaceHolderMain$conferenceDate" type="text" id="ctl00_PlaceHolderMain_conferenceDate" style="width:100%;" value="7/21/2014 11:30:55 AM" />
更新:我已尝试过以下操作,但两项工作仍未更改ID:
<asp:TextBox ID="conferenceDate" runat="server" ClientIDMode="Static" />
和
当我稍后尝试使用jQuery选择它们时,我必须使用更改后的id:
$("ctl00_PlaceHolderMain_conferenceDate").val()
答案 0 :(得分:3)
除了将ClientIDMode
设置为static
之外,您还可以使用ClientID
属性找到id
。
<%= conferenceDate.ClientID %>
使用您的样本信息,您可以这样找到:
单引号或双引号,不要忘记哈希标记(如果它是一个类,则为点)。
$("#<%= conferenceDate.ClientID %>").val()
答案 1 :(得分:1)
您可以将ClientIDMode设置为Static
。
这将阻止控件ID
在运行时更改。
E.g:
<asp:TextBox ID="conferenceDate" runat="server" ClientIDMode="Static" />
答案 2 :(得分:1)
尝试将文本框的ClientIDMode设置为“静态”(更多信息:http://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx):
<input id="conferenceDate" runat="server" ClientIDMode="Static" style="width:100%;" />
答案 3 :(得分:0)
为什么不使用asp:textbox并将ClientIDMode设置为静态?
<asp:TextBox ID="conferenceDate" runat="server" ClientIDMode="Static"></asp:TextBox>