验证组时出现奇怪的错误清除行为

Strange error clearing behavior when validating group

本文关键字:错误 清除 验证      更新时间:2023-09-26

我使用的是jquery validate,并设置了一个组,这样当我所需的任何字段无效时,它只显示一条错误消息。错误被正确抛出,但每当有多个无效字段时,我就会遇到问题。出于某种原因,jquery在清除第一个无效字段时会清除错误消息。它似乎没有考虑到可能还有其他无效字段尚未修复的事实。我需要错误消息保持不变,直到清除组中最后一个无效项为止。

这是我正在使用的代码:

jQuery(function ($) {
    jQuery.validator.messages.required = "Please complete the required fields.";
    $("#quote").validate({
        errorLabelContainer: "#error-note",
        rules: {
            serviceDate: "required",
            recurringBasis: "required"
        },
        highlight: function (element) {
            $(element).parent().prev().prev('span').addClass("error");
        },
        unhighlight: function (element) {
            $(element).parent().prev().prev('span').removeClass("error");
        },
        groups: {
            collecive: "serviceDate recurringBasis"
        }
    });
});

这里有一个Fiddle来帮助演示我在说什么。

我需要组错误消息"请填写必填字段。"以保持不变,直到组中最后一个无效项被清除。如有任何帮助,我们将不胜感激。

由于这似乎是一个bug,所以这里没有太多可以做的事情。(我认为关于修复错误和修改插件源代码的讨论应该局限于开发者的官方GitHub存储库。

否则,将onkeyuponfocusout选项设置为false将强制窗体验证测试仅在提交按钮的click事件发生时发生。这并不理想,但在修复错误之前,这可能是一个可以接受的解决方法。

$("#quote").validate({
    onkeyup: false,
    onfocusout: false,
    ...

http://jsfiddle.net/vRWgv/3/