【问题标题】:Dynamically adding Textbox in asp.net using C#使用 C# 在 asp.net 中动态添加文本框
【发布时间】:2013-02-20 07:58:03
【问题描述】:

我编写了一个代码,其中一个文本框被动态添加到一个 gridview 单元格中。文本框中有一些默认文本。我希望当用户单击文本框时,默认文本将消失,然后用户只能在其上写任何数字,即用户将无法使用字母或特殊字符。

请告诉我如何实现这一目标。 代码示例

    Gridview gv=new Gridview();
    gv.DataSource=dt;
    gv.DataBind();

    Textbox t1 = new Textbox();
    t1.Text="Outages if any(in mins)";
    gv.Rows[0].Cells[0].Controls.Add(t1);

在此之后需要帮助,例如当用户将光标放在文本框中时,默认文本将消失,如果用户在不写任何内容的情况下移除光标,则默认文本将重新出现。此外,默认文本应该有点模糊

谢谢。

【问题讨论】:

  • 您正在寻找的那种行为实际上并不打算在服务器端处理,至少不理想。您需要为客户端浏览器编写一些 javascript 来处理您的一些 UI 要求。
  • 有关进一步研究的更多信息,请查看占位符。它们完全可以完成您正在尝试做的事情,并且有大量关于它们的信息。

标签: asp.net textbox placeholder


【解决方案1】:

试试这样的

Textbox t1 = new Textbox();
t1.Attributes.Add("onclick", "if(this.value == 'default text') this.value = '';"
t1.Attributes.Add("onblur", "if(this.value == '') this.value = 'default text';" />

如果用户使用tab 密钥,您也可以使用onfocus

有了这个,使用this.value,你不需要知道控件的客户端ID。

【讨论】:

    【解决方案2】:

    这是一篇准确描述您想要做什么的帖子:

    HowTo: including default text in a Textbox while enforcing server-side validation

    相关点是:

    1. 为 onfocus & 和 onblur 添加 javascript 属性:

      txtName.Attributes.Add("onfocus","clearText()"); 
      txtName.Attributes.Add("onblur","resetText()"); 
    2. 添加 javascript 以清除并重新填充文本框:

          function clearText() { 
              document.form1.txtName.value = "" 
          } 
      
          function resetText() { 
              if(document.form1.txtName.value == "") 
                  document.form1.txtName.value = "(enter something here)" 
      

    【讨论】:

      【解决方案3】:

      你可以这样做。最简单的方法是使用 ajaxControlToolkit。您可以动态创建控件。例如:

          Dim mt As new TextBox 
          Dim newTest As New AjaxControlToolkit.TextBoxWatermarkExtender
      
          With mt
              .ID = "textBox1"
              .TextMode = TextBoxMode.SingleLine
          End With
      
          With newTest
              .ID = "TextBoxWatermarkExtender1"
              .TargetControlID = mt.ClientID
              .WatermarkText = "test"
      
          End With
      

      然后就像你对文本框所做的那样,将这两个控件添加到 gridview 中。如果您不使用 Ajax,您可以通过代码隐藏将 javascript 添加到控件中,但这比较困难。让我知道这是否是你想要做的,我会添加一些代码来告诉你如何做。

      这应该创建一个带有关联的 ajax TextBoxWaterMarkExtender 的文本框控件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-08
        相关资源
        最近更新 更多