【问题标题】:What is the problem with this onload event?这个 onload 事件有什么问题?
【发布时间】:2010-06-21 10:14:31
【问题描述】:

我有这个密码字段

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. 字符文字中的字符过多 为什么这首先显示为空,为什么会出现这些错误?我需要的是在密码字段中显示一个默认值。

【问题讨论】:

  • 默认字段始终用于通知用户输入。为什么要显示为点的密码默认字段?
  • @Amitabh 怎么样? @Rahul 我只有用户名和密码字段。用户名通知在此处输入用户名。所以一个空的密码字段不太好。每当用户看到点时,他就会明白这是密码。我没有与这些字段相关的任何标签。

标签: c# asp.net javascript html


【解决方案1】:

问题在于 OnLoad 中的文本与 runat=server 的组合。

由于该 runat 属性,asp.net 认为 OnLoad 指定了服务器端函数。然后 '''password' 似乎(至少对 C# 而言)指定字符文字,其中第一个实际字符太少(“空字符文字”),第二个太多。

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

【讨论】:

    【解决方案2】:

    在我看来,您想提供“水印”,而不是真正的密码。你看过Ajax控制工具包的Watermark extender吗?

    【讨论】:

    • 其实这个词是placeholder,包含在HTML5规范中。
    • 即使显示点也足够了。
    【解决方案3】:

    @Hans Kesting 回答是正确的,但是如果你不想使用扩展器,你可以使用下面的代码。

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-25
        • 1970-01-01
        • 2013-02-17
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多