如何通过电子邮件输入进行不显眼的验证以清除所需的验证?

时间:2013-01-25 23:28:34

标签: asp.net-mvc-3 html5 jquery-validate unobtrusive-validation

我有一个移动应用程序,我正在ASP.Net MVC3中编写(使用JQuery不引人注意的验证)。作为其中的一部分,我正在收集用户的姓名和电子邮件信息。我的模型包括以下字段:

  [Required] public String Name {get; set;}
  [Required] public String Email {get; set;}

在我看来,我有以下形式的输入元素:

@Html.EditorFor(m => m.Name);
@Html.EditorFor(m => m.Email, "Email");

其中字符串编辑器模板和电子邮件编辑器模板相同,但电子邮件模板明确将type属性设置为“email”。

当我最初提交表单而没有输入任何数据时,我得到客户端验证,说明这两个字段都是必需的。当我开始在“名称”字段中键入时,验证警告会立即消失。当我开始在电子邮件字段中输入时,验证仍然存在。

然后我可以点击提交,表格正确提交,尽管“需要电子邮件字段”。验证消息仍然可见。

如果我修改电子邮件编辑器模板以设置type =“text”而不是type =“email”,则验证会清除我期望的方式(但移动用户将无法获得特定于电子邮件的键盘)。 / p>

两个问题:(1)为什么它的行为方式如此? (2)如何使其“正常”(即,在输入电子邮件时“必需”验证消失)?

1 个答案:

答案 0 :(得分:3)

我认为您正在使用此行为,因为您使用的是旧版本的jQuery验证。自1.9.0以来的插件处理关键字,关注和关注包含电子邮件的HTML5类型的输入元素。 MVC3应用程序的标准模板附带了jquery validate 1.8.0,但不会。

所以你的回答:

  1. jQuery验证版本< 1.9.0不处理keyup,focusin和 html输入元素类型的焦点输出事件,例如type = email

  2. 升级您的jquery-validate.js - 1.9.0或更高版本