C# - 如何在焦点上更改文本框的值

时间:2014-12-16 22:45:39

标签: c# asp.net .net textbox onclick

我正在用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事件不起作用。

提前感谢您的帮助!

4 个答案:

答案 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 来隐藏回发