jquery validate()问题

时间:2011-07-27 20:23:40

标签: jquery validation

我经常使用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()。 但你是否马上点击再次提交,你得到警报(),然后,打开/显示代码功能,打开方框。

有人可以帮我解释为什么会这样吗?

谢谢!

2 个答案:

答案 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');
            }
        });

    }
});

看看小提琴:http://jsfiddle.net/nicolapeluchetti/3Vw4y/4/

答案 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');
    }
  });