Below is a function I've written for validating a simple form. You'll see three date fields: cadDocDate (required), cadRecDate (optional), occyDate (optional) that each use a custom rule of camsDate. If the date is not in the format of MM/DD/YYYY a validation message from that rule will appear.
The issue is that the date validation text of cadDocDate is always overridden by the required validation text. Is there some way to write it in such a way that only if cadDocDate is empty the required validation text shows, else show the date validation text?
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);
}
});
},