我经常使用validate插件 - 很棒。 我当前的设置,是一个修复“关闭”框,其中包含字段。 我想要做的是,如果该框包含未填写的必填字段,则框应该打开尝试提交。
这是我的代码:
$("#ftblSubGroupsadd").validate({
invalidHandler: function(form, validator) {
alert('Note, a few mandatory fields remain un-answered. You may have to open some closed boxes');
$("label.error").closest("div[class=inside]").css("display","block");
$("label.error").closest("div.boxed").removeClass().addClass('box');
}
});
和here是一个在线演示。
奇怪的是,当你第一次尝试使用submkit时,你得到的只是alert()。 但你是否马上点击再次提交,你得到警报(),然后,打开/显示代码功能,打开方框。
有人可以帮我解释为什么会这样吗?
谢谢!
答案 0 :(得分:3)
我认为问题是在执行代码后添加了类label.error:这就是为什么第一次没能正确运行以及第二次运行正常的原因。
编辑 - 我发现了一个解决方案(我认为):
$("#ftblSubGroupsadd").validate({
invalidHandler: function(form, validator) {
alert('Note, a few mandatory fields remain un-answered. You may have to open some closed boxes');
$.each(validator.currentElements, function(i, el){
if(! validator.element(el)){
$(el).closest("div[class=inside]").css("display", "block");
$(el).closest("div.boxed").removeClass().addClass('box');
}
});
}
});
答案 1 :(得分:1)
$("#ftblSubGroupsadd").validate({
showErrors: function(){
this.defaultShowErrors();
//alert('Note, a few mandatory fields remain un-answered. You may have to open some closed boxes');
$("label.error").closest("div[class=inside]").css("display","block");
$("label.error").closest("div.boxed").removeClass().addClass('box');
}
});