jquery validate中groups,errorPlacement和success共用bug
jquery validate的文档http://docs.jquery.com/Plugins/Validation/validate#toptions
groups就是把若干的文本框,形成一个组,此组可以有统一的错误提示,组中的元素不论哪个没有通过都会显示错误
success是验证通过后可以执行一些东西,比如显示OK
根据文档中的groups和success提供的示例代码
1: $("#myform").validate({
2: groups: {
3: username: "fname lname"
4: },
5: errorPlacement: function(error, element) {
6: if (element.attr("name") == "fname"
7: || element.attr("name") == "lname" )
8: error.insertAfter("#lastname");
9: else
10: error.insertAfter(element);
11: },
12: debug:true
13: })
1: $("#myform").validate({
2: success: function(label) {
3: label.addClass("valid").text("Ok!")
4: },
5: submitHandler: function() { alert("Submitted!") }
6: })
当同时使用这两者的时候,组中的某一个元素验证通过了,就会执行success中的东西,错误提示变成了OK,这显然是不对的。
遗憾的是success中,只提供了label参数,label就是显示错误或正确信息的地方,而没有提供element,无法获得是那个文本框触发了success
临时的解决办法:
jquery.validate.js中(mvc自带),623行
showLabel: function(element, message)
showLabel中调用了success,showLabel在被调用时传入了element
修改651行
: this.settings.success( label );
改为
: this.settings.success( label,element);
这样可以在自己设置的success中通过element获取是那个文本框触发了success,然后判断是否在组中,组中其他元素是否有错误等等
希望validate能够有更好的改进