I have this piece of code where i am trying to validate the jquery based Date of Birth Validation.
is there any JS function which also checks the full date if it falls in a leap year or not, i am trying this but it does seems to be working
function isValidDate(s) {
var bits = s.split('/');
var d = new Date(bits[2] + '/' + bits[1] + '/' + bits[0]);
return !!(d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0]));
}
date i tested is: 02/29/1920 - it is giving false (edited)
testing it like this:
function init_inputOnKeyUp(){
$('select[name="day"],select[name="year"]').off('change');
$('select[name="month"],select[name="day"],select[name="year"]').on('change', function(e) {
if (type == 'select') {
var newdate = $('select[name="month"]').val() + '/' + $('select[name="day"]').val() + '/' + $('select[name="year"]').val();
var results = isValidDate(newdate.toString());
console.log(results);
console.log(newdate.toString());
}
});
}
problem i can't use any extra library like moment.js
the error is it is always giving me false when i try to validate with a full date
also i changed my function toL
this function should return me true, but it is returning me "undefined"
function isValidDate(sDate) {
var dateformat = /^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$/;
if (sDate.match(dateformat)) {
var seperator1 = sDate.split('/');
var seperator2 = sDate.split('-');
if (seperator1.length > 1) {
var splitdate = sDate.split('/');
} else if (seperator2.length > 1) {
var splitdate = sDate.split('-');
}
var dd = parseInt(splitdate[0]);
var mm = parseInt(splitdate[1]);
var yy = parseInt(splitdate[2]);
var ListofDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (mm == 1 || mm > 2) {
if (dd > ListofDays[mm - 1]) {
return false;
}
}
if (mm == 2) {
var lyear = false;
if ((!(yy % 4) && yy % 100) || !(yy % 400)) {
lyear = true;
}
if ((lyear == false) && (dd >= 29)) {
return false;
}
if ((lyear == true) && (dd > 29)) {
return false;
}
}
} else {
return false;
}
}