【问题标题】:C# - How to change value of textbox on focusC# - 如何在焦点上更改文本框的值
【发布时间】:2014-12-16 22:45:39
【问题描述】:

我正在用 C# 编写一个应用程序。我想在用户单击(聚焦)文本框后替换 TEXT 属性的值。当他们单击以编辑文本框时,我想将 TEXT 值设置为空白,而不是“在此处输入名称”。

前端:

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

提前感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

    请记住,ASP.NET 主要是服务器端。在 C# 中运行的操作需要回发到服务器。使用 AJAX 可以在一定程度上减轻这对页面的影响,但这就是为什么您在 ASP 控件上看不到“OnClick”事件的原因。

    但是,您仍然可以使用 Javascript 的“OnClick”事件。由于 Javascript 在客户端上运行,并且此实例中的交互完全在客户端上处理,因此您应该使用它。

    【讨论】:

    • 遗憾的是,这个应用程序不使用任何 Javascript(不是我的想法 ^_^)。我希望我不必使用 JS,因为到目前为止,它只是“需要”这种形式。不过,我会记住你的建议,因为它非常有道理。另外,我会发回我最终做的事情。谢谢!
    • @Gigi 使用 Javascript 有什么问题?它不像您必须包含的库。 Javascript 是当今 任何 网页的元素。
    • 我同意你的看法。如今,JS 几乎是不可或缺的。幸运的是,我获得了在应用程序中实现 Javascript 库的许可。仅使用 C# 来实现这一点似乎不必要地复杂。按照建议,我使用 Javascript 的 OnClick 事件来完成此功能。
    【解决方案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" />
    

    【讨论】:

      【解决方案3】:

      您应该简单地使用以下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 中并将其包装在:&lt;script type="text/javascript"&gt;&lt;/script&gt;。这些是显示焦点清晰的文本的理想方法。

      您也可以使用Tooltip。希望这些示例对您有所帮助。 重要提示,我在 IE 8 中与占位符的兼容性没有问题。此外,这些方法不会强制执行 回发,这可能由于服务器端而发生。这将迫使您要么执行 Postback,要么实施 Update Panel / Ajax 来隐藏 Postback

      【讨论】:

      • 我成功使用了 Placeholder 以及 Javascript 的 OnClick 事件(以防浏览器不兼容)。谢谢!
      【解决方案4】:

      您为什么不使用占位符属性而完全不用担心替换文本。这将显示文本框何时为空但焦点消失

      【讨论】:

      猜你喜欢
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多