input type = email jquery validate覆盖mvc数据注释

时间:2013-05-13 13:38:47

标签: asp.net-mvc jquery-validate validation data-annotations

我的viewmodel上有以下属性:

    [Required(ErrorMessage = "Email is required")]
    [RegularExpression(RegularExpressions.Email, ErrorMessage = "Email is not valid")]
    [DataType(DataType.EmailAddress)]
    public string Email { get; set; }

在MVC4中,由于DataType注释,它呈现为<input type="email"...,这对于将键盘更改为包括@的设备(如ipad)非常有用。不幸的是,jquery.validate似乎使用自己的正则表达式自动验证该字段,因此如果用户输入了错误的电子邮件,则会显示jquery validate错误消息,而不是我在属性中定义的消息。

停止jquery.validate执行此自动验证的最佳方法是什么,以便使用我的正则表达式?

2 个答案:

答案 0 :(得分:1)

简而言之,答案是MVC不支持自动覆盖JQuery验证消息或抑制验证。

但是,您可以相对轻松地本地化JQuery验证。以下是如何执行此操作的几个示例:

How to change JQuery validation text directly

JQuery validation localization plug in

**警告 - 我自己没有对它们进行测试,但一般情况下,您希望在页面上的JQuery引用之后包含脚本

答案 1 :(得分:0)

由Dave Ward发现this answer建议一种不涉及更改外部js库的解决方法。

只需在jquery和jquery.validate包括:

之后添加以下内容
$.validator.methods.email = function (value, element) {
    return this.optional(element) || true; };