表单验证消息(使用 jQuery 验证插件)

Form Validation Messages (using jQuery Validation Plugin)

下面是我编写的用于验证简单表单的函数。您将看到三个日期字段:cadDocDate(必填)、cadRecDate(可选)、occyDate(可选),每个字段都使用 camsDate 的自定义规则。如果日期不是 MM/DD/YYYY 的格式,则会显示来自该规则的验证消息。

问题是 cadDocDate 日期验证文本 总是被 必需的验证文本 覆盖。有没有什么方法可以这样写 only 如果 cadDocDate 是空的 required validation text shows, else show the 日期验证文本?

       addValidation: function (parent, el) {
            $.validator.addMethod(
                "camsDate", 
                function(value, element) {
                    return this.optional(element) || value.match(/(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d/);
                },
                "Dates must be entered in the format MM/DD/YYYY."
            );
            $(el).validate({
                errorClass: "validation-error",
                ignore: [],
                rules: {
                    fileType: "required",
                    fileSubType: "required",
                    fileTitle: "required",
                    cadDocDate: {
                        camsDate: true,
                        required: true
                    },
                    cadRecDate: {
                        camsDate: true
                    },
                    cadDiscipline: "required",
                    phoCompass: "required",
                    occyDate: {
                        camsDate: true
                    },
                },
                messages: {
                    fileType: "File Type is a required field.",
                    fileSubType: "Sub Type is a required field.",
                    fileTitle: "Title is a required field.",
                    cadDocDate: "Document Date is a required field.",
                    cadDiscipline: "Discipline is a required field.",
                    phoCompass: "Compass direction is a required field."
                },
                onkeyup: function (element) {
                    $(element).valid();
                    fileCenter.ui.functionality.updateErrorCount(parent);
                }
            });
        },

是的,这是可能的。它当前以这种方式运行,因为您只为 cadDocDate 字段定义了一条自定义消息。因此,无论调用什么验证,都将返回您定义的单个消息。要更正此问题,您应该为特定验证类型定义自定义消息。例如,

messages: {
         fileType: "File Type is a required field.",
         fileSubType: "Sub Type is a required field.",
         fileTitle: "Title is a required field.",
         cadDocDate: {
              required: "Document Date is a required field."
         }
}

由于此部分定义了自定义消息,任何时候您未指定文本时,将使用验证方法中定义的默认消息。

查看文档以获取更多详细信息 - http://jqueryvalidation.org/validate/

查看这支笔的简化示例 - http://codepen.io/anon/pen/vEjovP