2013-02-04 26 views
1

我有一個視圖,它使用ValidationMessageFor訪問模型中包含的數據註釋,並且沒有問題。但是,除了相關控件(作爲標準實踐)之外,我不想顯示驗證消息,而是希望在用戶將鼠標懸停在驗證警告圖標上時顯示驗證消息。MVC4 ValidationMessageFor

我已經設法讓這部分工作,但它需要有問題的控件在用戶點擊驗證警告圖標之前有焦點,否則它不顯示任何內容。是否有可能通過jQuery檢索驗證消息?

型號:

[Required(ErrorMessageResourceName = "EmailRequiredErrorMessage", ErrorMessageResourceType = typeof(Resources.Languages.Models.RegistrationValidateModel))] 
[StringLength(60, ErrorMessageResourceName = "EmailStringLengthErrorMessage", ErrorMessageResourceType = typeof(Resources.Languages.Models.RegistrationValidateModel))] 
[Display(Name = "EmailDisplayName", ResourceType = typeof(Resources.Languages.Models.RegistrationValidateModel))] 
[RegularExpression(@"[email protected]+\..+", ErrorMessageResourceName = "EmailInvalidRegularExpressionErrorMessage", ErrorMessageResourceType = typeof(Resources.Languages.Models.RegistrationValidateModel))] 
public string Email { get; set; } 

查看

@Html.ValidationMessageFor(m => m.Email) 

生成的HTML

<input class="span12" data-val="true" data-val-length="You must enter an email address less than 60 characters long" data-val-length-max="60" data-val-regex="You must enter a valid email address" data-val-regex-pattern="[email protected]+\..+" data-val-required="You must enter an email address1" id="Email" name="Email" type="text" value="" /> 

...

<span class="field-validation-valid" data-valmsg-for="Email" data-valmsg-replace="true"></span> 

目前,驗證後懸停無法檢索錯誤消息

enter image description here

但是,如果你給控件焦點,然後單擊它顯示消息的驗證警告圖標(儘管在一個稍微不同的位置):

enter image description here

+0

這可能有助於... http://stackoverflow.com/a/7674660/609176 –

回答

1

訪問使用jQuery的屬性應該沒有問題的工作,無論是控制具有焦點與否。嘗試

$("#Email").attr("data-val-required") 
+0

的問題,那就是它拉可能不發生的特定的驗證消息。理想情況下,我需要一種顯示給定控件所發生的所有錯誤的方法。 – Dan

+0

對不起,我沒有正確理解你的問題。我想知道是否可以使用jQuery選擇器訪問包含驗證消息的跨度的前一個元素。當出現錯誤時,跨度有一個特定的類「'field-validation-error」'。如$(「。field-validation-error〜input」)。attr(「data-val-required」)' –