表单验证消息(使用 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
下面是我编写的用于验证简单表单的函数。您将看到三个日期字段: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