为jQuery Validate插件添加自定义错误条件和常规错误消息

时间:2012-01-12 14:48:34

标签: jquery validation jquery-plugins

我正在开发一个应用程序解决方案,以便为我提供有限的页面空间,因此无法为每个必填字段应用包含的错误消息。因此,我正在尝试创建一个解决方案,突出显示受影响的必填字段,并仅为表单中的电子邮件地址,电话和密码等指定字段创建自定义消息。

我目前正在使用基本shell(对于包含的消息工作正常)

    var v = $("form").validate({
        rules: {
            email: {
                required: true,
                email: true                 
            },
            confirmEmail: {
                required: true,
                email: true,
                equalTo: "#email"
            }
        },
        messages: {
            email: "Please enter a valid email address",
            confirmEmail: {
                required: "Please enter a valid verify email address",
                equalTo: "Both email addresses must be the same."
            }
        },
        errorContainer: errcontainer,
        errorLabelContainer: $("ol", errcontainer),
        wrapper: 'li',
        onkeyup: false,
        onblur: false
    });     

提前感谢您的任何帮助或建议。

1 个答案:

答案 0 :(得分:1)

您要做的是在validate插件中实现showErrors挂钩。

您将传递错误消息的映射,然后传递与生成它们的表单元素关联的相同消息的数组。

然后,最好的办法是只获取默认处理程序的副本(在validate插件中调用defaultShowErrors)并稍加修改(仅显示您关注的处理程序的标签)。

您的验证选项中会出现类似的情况:

showErrors: function(errorMap, errorList) {
    for (var i = 0; this.errorList[i]; i++) {
        var error = this.errorList[i];
        //this is the only real part you modify
        if (error.element.id == 'email' || error.element.id == 'confirmEmail') {
            this.showLabel(error.element, error.message);
        }
        this.settings.highlight && this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
    }
    //a whole bunch more stuff after this, from jquery.validate.js
}

在此处查看此想法:http://jsfiddle.net/ryleyb/D3tfu/