I have 3 fields for date input:
<input type="text" id="passport-doi-1" name="passport-doi-1" placeholder="DD" maxlength="2">
<input type="text" id="passport-doi-2" name="passport-doi-2" placeholder="MM" maxlength="2">
<input type="text" id="passport-doi-3" name="passport-doi-3" placeholder="YYYY" maxlength="4">
How should I validate with jQuery Validate plugin that if date is input, then this is correct?
Looks like I should create groups
of fields (to have only one error message) and then custom validation rule. But how it should look like?
Upd. I've tried to do the following, but it doesn't work:
$.validator.addMethod('validDate', function (value, element) {
var dd = $("#passport-doi-dd").val();
var mm = $("#passport-doi-mm").val();
var yyyy = $("#passport-doi-yyyy").val();
if (dd=="" && mm=="" && yyyy=="") return true;
try {
var date = new Date(yyyy,mm-1,dd,0,0,0,0);
return mm===(date.getMonth()+1) && dd===date.getDate() && yyyy===date.getFullYear();
}
catch(er) {
return false;
}
}, 'Please use format DD MM YYYY.');
...
rules: {
"passport-doi-dd": {
required: false,
validDate: true,
range: [1, 31]
},
"passport-doi-mm": {
required: false,
validDate: true,
range: [1, 12]
},
"passport-doi-yyyy": {
required: false,
validDate: true,
range: [1990, 2012]
}
},
messages: {
"passport-doi-dd": "Please use format DD MM YYYY.",
"passport-doi-mm": "Please use format DD MM YYYY.",
"passport-doi-yyyy": "Please use format DD MM YYYY."
}