jQuery验证 - 错误消息值

时间:2012-01-30 12:38:41

标签: jquery validation unobtrusive-validation jquery-validate

我有一个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 个答案:

答案 0 :(得分:1)

不太确定你在这里尝试做什么,但你明确地将验证消息设置为data_val_hexcolor的值:

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

发送到适配器的选项的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 = "" })