我有一个ASP.NET MVC登录表单,它使用客户端不显眼的验证。
我的登录模型的UserName具有[Required]
属性。
输入的大多数用户名都是电子邮件地址,所以在触摸设备上,我想展示一个友好的电子邮件友好键盘。所以我在type="email"
上设置<input>
,就像这样:
@Html.TextBoxFor(m => m.UserName, new { type = "email" })
现在,我不希望验证电子邮件地址(因为非电子邮件用户名有效),但不知何故,因为我有[Required]
属性,默认的jquery.validate电子邮件验证启动同样,给我一个'请输入有效的电子邮件地址'错误。
有没有办法阻止这种情况,同时保持必填字段验证?
答案 0 :(得分:4)
解决方案变得非常简单:
$('#loginform').data("validator").settings.rules["UserName"].email = false;
使用多个规则集(来自jquery.validate.js)验证输入字段:
var data = $.validator.normalizeRules(
$.extend(
{},
$.validator.metadataRules(element),
$.validator.classRules(element),
$.validator.attributeRules(element),
$.validator.staticRules(element)
), element);
attributeRules
是导致电子邮件验证被激活的原因,但由于staticRules
取得优先权,因此我们的上述作业将取消激活电子邮件验证。
答案 1 :(得分:0)
也许是一个dum建议,但如何删除[Required]属性并在后期操作中在控制器中处理它? :)