我正在用C#编写一个应用程序。我想在用户单击(焦点)文本框后替换TEXT属性的值。我想在他们点击编辑文本框时将TEXT值设置为空白而不是单词“ENTER NAME HERE”。
前端:
<asp:TextBox Text="ENTER NAME HERE" OnClick="MyTextboxID_OnClick" ID="MyTextboxID" runat="server"></asp:TextBox>
代码隐藏:
protected void MyTextboxID_OnClick(object sender, EventArgs e)
{
MyTextboxID.Text = "";
}
我试图找到这个问题的答案,但答案与我想要做的并不完全相符。
我希望C#有类似于Javascript的“OnClick”或“OnFocus”事件。我将OnClick事件添加到文本框中以用于说明目的。此OnClick事件不起作用。
提前感谢您的帮助!
答案 0 :(得分:4)
请记住,ASP.NET主要是服务器端。在C#中运行的操作需要回发到服务器。使用AJAX可以稍微减轻这对页面的影响,但这就是为什么你没有看到&#34; OnClick&#34;关闭ASP控件的事件。
但是,你仍然可以使用Javascript&#34; OnClick&#34;事件。由于Javascript在客户端上运行,并且此实例中的交互在客户端上完全处理,因此您应该使用它。
答案 1 :(得分:2)
如果您不习惯使用Javascript,可能需要查看TextBoxWatermark服务器端控件。
可用NuGet。
<asp:TextBox OnClick="MyTextboxID_OnClick"
ID="MyTextboxID" runat="server">
</asp:TextBox>
<ajaxToolkit:TextBoxWatermarkExtender ID="TBWE2" runat="server"
TargetControlID="MyTextboxID"
WatermarkText="ENTER NAME HERE"
WatermarkCssClass="watermarked" />
答案 2 :(得分:1)
为什么不使用占位符属性而不必担心替换文本。这将显示文本框何时为空但在焦点上消失
答案 3 :(得分:1)
您应该只使用以下Placeholder="Enter text here."
选项一:
<asp:Textbox id="txtName" runat="server" placeholder="Enter name here." />
选项二:
$("#<%= txtName.ClientId %>").setAttribute('placeholder', 'Enter name here.');
$("#<%= txtName.ClientId %>").attr('placeholder', 'Enter name here.');
对于Javascript实现,您只需将其放在 View 中并将其包装在:<script type="text/javascript"></script>
中。这些是显示文本的理想方法,可以清除焦点。
您还可以使用Tooltip
。希望这些例子可以帮到你。 重要提示,我对IE 8中与占位符的兼容性没有任何问题。此外,这些方法也不会强制执行由于服务器端而发生的回发。哪会强制您执行回发或实现更新面板/ Ajax 来隐藏回发。