2009-12-28 80 views
2

所以我有这个jQuery验证插件,它有一个自定义的成功消息。该表格会自动验证,因为它附着在主体上。当我希望检查变量以查看表单是否有效时,问题就出现了。重新验证它,最终会添加一个额外的成功消息(我的情况是图片),这是不希望的。我希望成功消息只出现一次,而不管它多次验证的事实。这里是我的代码:jQuery验证自定义成功消息重复检查

$("#makeaComment").validate({ 
    errorContainer: ".error", 
    errorPlacement: function(error, element) { 
    error.appendTo(element.next()); 
    }, 
    success: function(label) { 
    label.removeClass("error").addClass("check"); 
    } 
    }); 

    $("#loginAction").click(function() { 
    if ($("#makeaComment").valid()) { 
    commentLogin(); 
    } 
    else { 
    $('#loginAction').attr('value','Fix Errors and Continue'); 
    } 
    }); 

谢谢!

回答

0

随着成功功能,请确保检查图像是否已经存在或清除所有内容并添加图像。我会和前者一起去的。

看看脚本,它似乎可能会使错误的许多元素。因此,不要删除类错误并添加checked,只需添加checked作为新元素一次。但是一定要在显示错误时删除该类。

+0

杰夫,你能澄清所有你怎么想补充检查作为新元素?我和这张海报 – 2011-05-09 18:25:09

+0

@jessica有同样的问题,只是为了确保您不会一直添加check类并重复查看上面的代码,您可以在removeclass(“error”)之后添加另一个removeClass以执行removeClass( “check”),然后执行addClass(“check”),这将确保您只有一个检查类的实例。 – 2011-05-09 19:09:06

+0

我已经尝试在我的成功函数中添加'removeClass(“valid”)',但是,似乎并没有清除重复的实例(尽管我注意到'removeClass(“error”)'似乎是必需的) 。我创建了一个单独的问题@ http://stackoverflow.com/questions/5942425/jquery-validate-success-function-not-clearning-valid-labels-on-re-validate来澄清我的问题。如果您有时间快速浏览我的新帖子并发表评论,如果您有任何建议,我会非常感激。 – 2011-05-09 21:10:25

0

我已经想出了最终如何解决这个问题!当你从有效元素中删除“错误”类时,jquery插件代码会跳过它重新使用该元素的代码块,而是添加另一个代码块。所以克服这个问题的最简单的方法是不去除错误类,而是覆盖有效类中的CSS。

如:

label.removeClass("error").addClass("check");成为label.addClass("check");

和你的CSS可能会被修改,像这样:

label.error { 
    color: red; 
} 
label.valid { 
    color: green !important; // !important added 
}