4

我有一个 ASP.NET MVC 登录表单,它使用客户端不显眼的验证。

我的登录模型有一个带有[Required]属性的用户名。输入的大多数用户名都是电子邮件地址,所以在触摸设备上,我想展示一个漂亮的电子邮件友好型键盘。所以我设置type="email"<input>,像这样:

@Html.TextBoxFor(m => m.UserName, new { type = "email" })

现在,我不想验证电子邮件地址(因为非电子邮件用户名是有效的),但不知何故,因为我有一个[Required]属性,默认的 jquery.validate 电子邮件验证也会启动,给我一个“请输入有效的电子邮件地址错误。

有什么方法可以防止这种情况,同时保持必填字段验证?

4

2 回答 2

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优先考虑,电子邮件验证在我们上面的任务中被停用。

于 2012-11-29T14:25:22.897 回答
0

也许是一个愚蠢的建议,但如何删除 [Required] 属性并在控制器中处理它的后期操作?:)

于 2012-11-29T21:42:51.060 回答