我的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执行此自动验证的最佳方法是什么,以便使用我的正则表达式?
答案 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; };