0

我有一個jQuery驗證規則jQuery驗證 - 錯誤信息價值

$.validator.addMethod("hexcolor", function (value, element) { 
    return this.optional(element) || /^(#){1}([a-fA-F0-9]){6}$/.test(value); 
}, "Please insert a valid hex color (#______)"); 

$.validator.unobtrusive.adapters.add("hexcolor", function (options) { 
    options.rules['hexcolor'] = options.params; 
    options.messages['hexcolor'] = options.message; 
}); 

的HTML,我綁定這樣

@Html.TextBoxFor(p => p.Color, new { data_val = "true", data_val_hexcolor = "Html Error message" }) 
@Html.ValidationMessageFor(p => p.Color) 

驗證當輸入無效時,我總是得到「HTML錯誤消息「作爲錯誤消息,而不是插件的」請插入有效的十六進制顏色(#______)「

Jquery validation

我怎樣才能得到插件的錯誤信息?

回答

1

不太清楚你想在這裏做什麼,但你的驗證消息明確設置爲data_val_hexcolor這裏的值:

options.messages['hexcolor'] = options.message; 

發送到適配器選項消息屬性包含值的data_val_ [rulename]屬性。

這是正常情況下你會想在ASP.NET MVC的東西,因爲它允許你從服務器設置驗證信息,就像你在這裏做的,而不是在Javascript:

@Html.TextBoxFor(... data_val_hexcolor = "Html Error message" }) 

可以忽略除去分配給options.messages['hexcolor']完全從服務器發來的消息,或者你可以通過替換該行:

// Only add view defined message if not empty: 
if (options.message) 
{ 
    options.messages['hex_color'] = options.message; 
} 

...,然後設置data_val_hexcolor爲空字符串在您的視圖(您不能刪除屬性顯然是因爲它是存在的觸發驗證規則的屬性):

@Html.TextBoxFor(... data_val_hexcolor = "" }) 
+0

Exacly我需要知道的。謝謝 – Catalin 2012-01-30 14:51:52