我经常使用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');
}
});
,这是一个在线演示。
奇怪的是,当您第一次尝试subkit时,您得到的只是alert()。但是如果你马上再次点击提交,你会得到alert(),只有这样,打开/显示代码功能,然后盒子打开。
谁能告诉我为什么会这样?谢谢!
我认为问题在于类标签。错误在你的代码执行后被添加:这就是为什么第一次不能正常运行而第二次可以正常运行的原因。
编辑-我找到了一个解决方案(我认为):
$("#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');
}
});
}
});
看小提琴:http://jsfiddle.net/nicolapeluchetti/3Vw4y/4/
好的,有人帮我在另一个列表,这段代码似乎工作:
$("#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');
}
});