2013-08-20 56 views
0

我有一個需要字段驗證的密碼。佔位符屬性在IE中不起作用,相反,驗證被激發爲顯示爲特殊字符的水印文本。 我遇到了很多像這裏 Placeholders in IEhttp://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html這樣的建議,適用於所有的文本框除了password.Any幫助是高度讚賞。IE中的佔位符不適用於密碼

+0

你需要爲IE8和以前以及解決方案?或者只是IE 9? –

+0

對於延遲響應感到抱歉,我通過添加jquery.placeholder-enhanced.min.js.來解決它。 – Sweta

回答

2

我見過同樣的行爲。非常令人沮喪的東西。我試圖通過添加〜/查看/共享/ EditorTemplates/Password.cshtml模板看起來像這樣覆蓋缺省模板:

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

的時候我是做一個字符串類型(〜/查看/共享上述工作/EditorTemplates/Password.cshtml),但不能輸入密碼。所以我下載了MVC4的源代碼並看了一下。我能看到的唯一情況是密碼字段的行爲方式與輸入(TextBoxFor)字段的不同之處在於,格式數據作爲空值傳遞到底層HTML生成代碼中(請參閱System.Web.Mvc.Html。 InputExtensions,第233行,PasswordHelper函數)。但這只是一個猜測。我永遠無法運行單元測試來驗證這個假設。

直到我找到一個解決方案,我的解決方法是從這個改變我的剃刀代碼:

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

要這樣:

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

這使得所需的水印顯示我。這是一個混亂,但你做什麼?

1

喬希 - 你走在正確的軌道上。

而不是

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

使用

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