IE中的占位符不适用于密码

时间:2013-08-20 17:51:38

标签: asp.net-mvc-4 watermark

我有一个密码,需要进行必要的字段验证。占位符属性在IE中不起作用,而是对显示为特殊字符的水印文本进行验证。 我在这里遇到了很多建议 Placeholders in IEhttp://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html适用于除密码以外的所有文本框。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

我看到了同样的行为。非常令人沮丧的东西。我尝试通过添加如下所示的〜/ Views / Shared / EditorTemplates / Password.cshtml模板来覆盖默认模板:

@Html.Password("", 
ViewData.TemplateInfo.FormattedModelValue,
new { 
    @class = "text-box single-line password",
    placeholder = ViewData.ModelMetadata.Watermark})

当我为String类型(〜/ Views / Shared / EditorTemplates / Password.cshtml)而不是密码时,上面的工作正常。所以我下载了MVC4的源代码并看了一下。我唯一能看到的是密码字段的行为方式与输入(TextBoxFor)字段不同,格式数据作为null传递给底层HTML生成代码(请参阅System.Web.Mvc.Html。 InputExtensions,第233行,PasswordHelper函数)。但这只是猜测。我永远无法运行单元测试来验证这一假设。

在找到解决方案之前,我的解决方法是从此更改我的Razor代码:

@Html.PasswordFor(model => model.Password)

对此:

@Html.PasswordFor(model => model.Password, new { placeholder = "Password" })

这使我想到了所需的水印。这是一个kludge,但你做什么?

答案 1 :(得分:1)

乔什 - 你走在正确的轨道上。

而不是

@Html.PasswordFor(model => model.Password)

使用

@Html.EditorFor(model => model.Password)