我有一个带有必填字段验证的密码。placeholder 属性在 IE 中不起作用,而是对显示为特殊字符的水印文本进行验证。我遇到了很多建议,例如 IE 中的 Placeholders和 http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html适用于除密码之外的所有文本框。任何帮助都非常重要赞赏。
问问题
1362 次
2 回答
2
我见过同样的行为。非常令人沮丧的东西。我尝试通过添加一个看起来像这样的 ~/Views/Shared/EditorTemplates/Password.cshtml 模板来覆盖默认模板:
@Html.Password("",
ViewData.TemplateInfo.FormattedModelValue,
new {
@class = "text-box single-line password",
placeholder = ViewData.ModelMetadata.Watermark})
当我为字符串类型(~/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,但你怎么办?
于 2013-09-17T18:27:35.983 回答
1
乔希 - 你在正确的轨道上。
代替
@Html.PasswordFor(model => model.Password)
利用
@Html.EditorFor(model => model.Password)
于 2013-11-13T03:41:39.220 回答