JQ验证:隐藏错误容器

时间:2012-03-11 11:24:01

标签: jquery validation hide

自动显示带有常规错误消息的错误容器DIV,因为它在验证默认值中指定:

jQuery.validator.setDefaults({
    ........
    errorContainer: ".valerror",
    ........
});

此容器只有一般的“检查输入”消息,不应包含特定于每个输入控件的消息。当我单击提交按钮而不填写表单时,将标记无效字段并显示常规错误消息。填充字段时,它们未标记,但仍保留一般错误消息。

现在问题是:当所有字段都有效时我需要隐藏容器(不再按下提交按钮)。

我试过

    unhighlight: function(element, errorClass) {
        if (this.numberOfInvalids() == 0) {
            $(".valerror").hide();
        }
    },

但是这段代码完全破坏了验证引擎的正常运行,因为它对“unhighlight”一无所知。

接受的答案

我将“unhighlight”和“突出显示”处理程序从JQuery验证插件源代码复制到我的代码中,并恢复了验证功能。

    highlight: function(element, errorClass, validClass) {
        // default handling
        if (element.type === 'radio') {
            this.findByName(element.name).addClass(errorClass).removeClass(validClass);
        } else {
            $(element).addClass(errorClass).removeClass(validClass);
        }
        // custom handling
        $("#errnum").html(this.numberOfInvalids());
    },
    unhighlight: function(element, errorClass, validClass) {
        // default handling
        if (element.type === 'radio') {
            this.findByName(element.name).removeClass(errorClass).addClass(validClass);
        } else {
            $(element).removeClass(errorClass).addClass(validClass);
        }
        // custom handling
        $("#errnum").html(this.numberOfInvalids());
    },

知道剩余的验证错误的数量有助于我弄清楚错误容器是由JQ验证插件自动隐藏的,并且问题出现在一些从属的SELECT中,这些SELECT在更改主SELECT时没有重新验证(但突出显示被删除了来自奴隶)。

1 个答案:

答案 0 :(得分:0)

你有可能做错其他事情,你没有在上面的例子中向我们展示。 errorContainer记录如下:

  

使用附加容器来显示错误消息。给出的元素为   发生错误时,errorContainer全部显示和隐藏

即。验证句柄显示和隐藏您指定的任何内容为errorContainer。你可以在这里看到它确实正确处理它:http://jsfiddle.net/ryleyb/neugH/

如果这没有帮助,您需要修改您的问题以提供更多代码......可能是您为$ .validate提供的其他选项以及附加到表单的任何其他JS。