1

我有一个通过 jQuery Validate 验证的注册表单,当表单正确捕获错误并显示验证错误消息时,它不会使用我的“label label-important”类,直到我强制验证/单击提交按钮第二次时间。

看看这里:http: //jsbin.com/uguwem/12/

这是我的js代码:

$('#registrationform').validate({ 
    highlight: function (element, errorClass, validClass) { 
        $(element).parents("div[class='control-group']").addClass("error");
        $(element.form).find("span[for=" + element.id + "]").addClass("label label-important");
        }, 
        unhighlight: function (element, errorClass, validClass) { 
                $(element).parents(".error").removeClass("error"); 
        }, 
        errorElement: 'span' 
 }); 
4

1 回答 1

1

它看起来像在生成错误元素(在您的情况下为 a )之前highlight被调用。span

这意味着当您span第一次尝试在 中查找时highlight,它并不存在。validate不会删除错误元素,它只是显示和隐藏它们,这就是第二次验证表单时发现它的原因。

我会通过使用该errorPlacement选项并手动添加类来解决这个问题:

$(document).ready(function() {
    $('#registrationform').validate({
        //errorClass: "label-important",
        highlight: function(element, errorClass, validClass) {
            $(element).parents("div[class='control-group']").addClass("error");

        },
        unhighlight: function(element, errorClass, validClass) {
            $(element).parents(".error").removeClass("error");
        },
        errorElement: 'span',
        errorPlacement: function($error, $element) {
            $error.addClass("label label-important").insertAfter($element);
        }
    });
});​

更新示例:http: //jsbin.com/opoqan/

于 2012-06-19T03:15:14.777 回答