0

我编写了一个代码,其中一个文本框被动态添加到一个 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);

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

谢谢。

4

3 回答 3

2

尝试这样的事情

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';" />

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

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

于 2013-03-05T19:22:49.313 回答
1

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

HowTo:在执行服务器端验证时在文本框中包含默认文本

相关点是:

  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)" 
    
于 2013-03-05T19:14:52.010 回答
0

你可以这样做。最简单的方法是使用 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 的文本框控件。

于 2013-03-05T19:13:06.917 回答