使用jquery更改asp:textbox占位符的文本

时间:2015-03-11 20:41:31

标签: jquery asp.net

有没有办法使用jquery更改asp:textbox占位符的文本? 我试图使用:

   $('#textbox1').attr("placeholder", "enter some text");

但没有任何反应 下面是我的asp文本框:

<asp:TextBox ID="textbox1" placeholder="Text" runat="server"  ></asp:TextBox>

2 个答案:

答案 0 :(得分:1)

您需要向jQuery添加一些元素,以便找到您要查找的文本框:

$("#<%=textbox1.ClientID %>").attr("placeholder", "enter some text");

由于您使用的是'asp:TextBox',因此在编辑网页时,.Net会为其ID添加值,导致文本框的ID不再等于'textbox1'。通过使用<%=textbox1.ClientID %>,您可以搜索在代码中命名文本框的原始ID。

例如: 在我的一个网页中,我有这个文本框:

<asp:TextBox runat="server" ID="nameTextBox" CssClass="form-control"></asp:TextBox>

当我运行我的网页并查看html代码的编译版本时,其ID现在是这样的:

id="ctl00_Content_propertiesDXCallbackPanel_nameTextBox"

正如您所看到的.Net已将数据添加到文本框的ID中以允许其使用它,希望这会有所帮助。

答案 1 :(得分:0)

在我看来,实际发生的事情是$('#textbox1')实际上不会返回任何元素。这是因为jQuery将查找具有确切ID textbox1的元素,并且默认情况下ASP.NET会为元素生成动态ID。

因此<asp:TextBox ID="textbox1" ... />实际上会像<input id="ctl00_someOtherDynamicStuff_textbox1" type="text"/> (请注意ID)那样呈现出来。

一种解决方案是为TextBox提供一个类,您可以通过以下方式选择它:<asp:TextBox ID="textbox1" CssClass="someClassName" runat="server"/>

然后在你的JS中使用它:

$('.someClassName').attr("placeholder", "enter some text");