我编写了一个代码,其中文本框动态添加到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);
在此之后需要帮助,例如当用户将光标放在文本框中时,默认文本将消失,如果用户删除光标而不写任何内容,则默认文本将重新出现。此外,默认文本应该有点模糊
感谢。
答案 0 :(得分: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。
答案 1 :(得分:1)
这篇文章准确描述了您的目标:
HowTo: including default text in a Textbox while enforcing server-side validation
相关要点是:
将javascript属性添加到onfocus&和onblur:
txtName.Attributes.Add("onfocus","clearText()");
txtName.Attributes.Add("onblur","resetText()");
添加javascript以清除并重新填充文本框:
function clearText() {
document.form1.txtName.value = ""
}
function resetText() {
if(document.form1.txtName.value == "")
document.form1.txtName.value = "(enter something here)"
答案 2 :(得分: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的文本框控件。