【问题标题】:Form Validation Messages (using jQuery Validation Plugin)表单验证消息(使用 jQuery 验证插件)
【发布时间】:2015-04-27 19:02:22
【问题描述】:

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

问题在于cadDocDate 的日期验证文本 总是被必需的验证文本 覆盖。有没有办法以这样的方式编写它仅如果cadDocDate为空所需的验证文本显示,否则显示日期验证文本 em>?

       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);
                }
            });
        },

【问题讨论】:

    标签: javascript jquery validation


    【解决方案1】:

    是的,这是可能的。由于您只为 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

    【讨论】:

    • 也许我理解错了,但是您编写消息定义的方式与我在示例中编写的方式相同,不是吗?我的问题不是显示“默认”消息,而是显示自定义所需消息代替自定义日期消息
    • 略有不同。请注意,您在 cadDocDate 之后编写了消息。在我的示例中,在 cadDocDate 之后我有一个对象文字。注意 { required: "Document Date is an required field." }.
    • 啊哈!我现在明白了。 Tyvm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多