jquery验证模态中的错误,不止一次触发模态

时间:2014-03-13 21:51:03

标签: javascript jquery validation

我在模态中显示(http://jqueryvalidation.org/)错误。

当用户没有填写电子邮件和代码字段时,它会显示一个错误消息模式,说明他们需要填写这两个字段,我点击关闭,然后显示另一个模态,但它只显示一个错误。有两个出错的地方,我在模态中点击关闭后不应该显示模态,第二件事:它只显示第二个模态出现时的最后一条错误信息(点击第一个模态中的关闭按钮后)。

提供屏幕截图,向您展示我在说什么

enter image description here enter image description here enter image description here

我做了一个计数++并在控制台中打印出来,它不止一次触发showErrors方法。我使用了错误的方法吗?我使用了showErrors,因为我可以将错误附加到消息变量中,然后将它们显示在模态中。

$("#enter-code-form").validate({
    //ignore: [],
    rules: {
        email: {
            required: true,
            email: true,
        },
        code: {
            required: true,
            minlength: 8,
            maxlength: 8,
        },
    },

    messages: {
        code: {
            required: "Please provide a valid code",
            minlength: "You need to provide a eight alpha-numeric code",
            maxlength: "You need to provide a eight alpha-numeric code",
        },
        email: {
            required: "Please provide email",
            email: "Your email address must be in the format of name@domain.com"
        }
    },

    showErrors: function(errorMap, errorList) {
        var message = '';
        var element = '';

        $.each(errorList, function (index, error) {
            message += '<p>' + error.message + '</p>';       
            element += error.element;        
        });

        display_modal('You have an error', message);
        console.log(message);
        // console.log(element);
    }
});

function display_modal(title, message)
{
    $("#error-modal").modal("show");
    $('.modal-title').show().html(title);
    $('.modal-body-message').show().html(message);
}

1 个答案:

答案 0 :(得分:2)

我不得不使用无效的处理程序:

invalidHandler: function(form, validator) {
    var errors = validator.numberOfInvalids();

    if (errors) {
        var errors = "";

        if (validator.errorList.length > 0) {
            for (x=0;x<validator.errorList.length;x++) {
                errors += "<p>" + validator.errorList[x].message + "</p>";
            }
        }
        display_modal('You have an error', errors);
    }
    validator.focusInvalid();
},