这个onload事件有什么问题?

时间:2010-06-21 10:14:32

标签: c# asp.net javascript html

我有这个密码字段

input class="txtfld" type="password" id="TextBoxLoginPassword"  runat="server" 
                value="password"     
                onfocus="javascript:if(this.value == 'password') this.value='';" 
                onblur="javascript:if(this.value == '') this.value='password';" 
                onload="javascript:if(this.value == '') this.value='password';"
                validationgroup="Login" />

问题是这显示为空。即使我设置了默认值。 为了解决这个问题,我添加了一个onload事件,我收到了以下错误

  1. 空字符文字
  2. 字符文字中的字符过多 为什么这首先显示为空,为什么我会收到这些错误?我需要的是在密码字段中显示默认值。

4 个答案:

答案 0 :(得分:2)

在我看来,你想提供一个“水印”,而不是真正的密码。您是否查看了Ajax控件工具包的Watermark extender

答案 1 :(得分:1)

@Hans Kesting的回答是正确的,但如果您不想使用扩展程序,则可以使用以下代码。

<input class="txtfld" type="text" id="TextBoxLoginPassword"   
                value="enter password"     
                onfocus="javascript:if(this.type != 'password') this.value='';this.type='password'" 
                 />

答案 2 :(得分:1)

问题在于OnLoad中的文本组合结束了“runat = server”。 由于该runat属性,asp.net认为OnLoad指定了服务器端函数。然后''和'密码'似乎(至少对C#)指定字符文字,其中第一个实际字符太少(“空字符文字”)而第二个太多。

所以尝试删除“runat = server”(并直接从QueryString中读取密码)

答案 3 :(得分:1)

这是一个非常好的JQuery / CSS,您可以在这里和您网站的其他地方使用它来解决您的问题:

http://attardi.org/labels/#demo