自动显示带有常规错误消息的错误容器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时没有重新验证(但突出显示被删除了来自奴隶)。
答案 0 :(得分:0)
你有可能做错其他事情,你没有在上面的例子中向我们展示。 errorContainer
记录如下:
使用附加容器来显示错误消息。给出的元素为 发生错误时,errorContainer全部显示和隐藏
即。验证句柄显示和隐藏您指定的任何内容为errorContainer。你可以在这里看到它确实正确处理它:http://jsfiddle.net/ryleyb/neugH/
如果这没有帮助,您需要修改您的问题以提供更多代码......可能是您为$ .validate提供的其他选项以及附加到表单的任何其他JS。