2012-06-29 50 views
3

我正在使用ASP.net MVC与twitter引导。自定义MVC验证属性和引导格式问题

我加入下列以获得等领域的错误,在引导

$.validator.setDefaults({ 
    highlight: function (element) { 
     $(element).closest(".control-group").addClass("error"); 
    }, 
    unhighlight: function (element) { 
     $(element).closest(".control-group").removeClass("error"); 
    } 
}); 

这与所有验证工作的伟大正确的样式,除了自定义验证属性。我创建的自定义验证程序检查是否选中了复选框,如果不是,则需要在文本字段中输入内容。这只是一个例子,但我创建的其他自定义验证属性以下面描述的相同方式失败。

如果我提交表单,所有错误的样式都是正确的,除了使用我的自定义验证程序的字段。不过,我知道验证器运行,因为错误消息出现,但消息和字段是黑色而不是红色。

如果我在字段中输入一些文本以满足验证器,错误消息将消失。然后,如果我删除该文本,则会返回错误消息,并且所有内容都应该是红色。

然后,如果我再次提交表单,即使错误仍然存​​在,红色样式也会消失,但仅限于使用自定义验证程序的字段,其他所有错误仍为红色。

在表单提交时,我设置的默认值(如上所示)不会针对使用自定义验证器的字段运行,但默认值将针对其他所有运行。

但是,使用自定义验证程序对字段进行模糊处理和关键事件处理后,所有行为都如预期的那样运行,并且所有样式都按预期工作。

我不知道下一步该看什么。任何帮助/方向表示赞赏。

+0

你可以重新创建的一个网站http://jsfiddle.net/或http你的榜样://jsbin.com/更好地查看错误? 谢谢 –

+0

看到这个问题:http://stackoverflow.com/questions/7493512/jquery-unobtrusive-validation-in-net-mvc-3-showing-success-checkmark –

回答

0

我最近有同样的问题,直到我发现在同一.control-group内有有效和无效的输入。 (在我的情况下,<input type="hidden">字段)。如果适用于您的情况下,也可以使用由highlightunhighlight方法,这样提供的errorClass

function highlight(element, errorClass, validClass) { 
    $(element) 
     .addClass(errorClass) 
     .closest(".control-group") 
     .addClass("error"); 
}; 

function unhighlight(element, errorClass, validClass) { 
    var c = $(element) 
     .removeClass(errorClass) 
     .closest(".control-group"); 
    // make sure not to remove parent container error class, 
    //if there is still an invalid input field inside 
    if (c.find("." + errorClass).length < 1) 
     c.removeClass("error"); 
};