// Verificación de año bisiesto (true/false) (limitado a rango 1900..2100)
function bisiesto(ano) {
if ((anoNum<1900)||(anoNum>2100)) return false;
return (((ano % 4 == 0) && (ano % 100 != 0)) || (ano % 400 == 0))
}
// Validación de fecha válida (limitado a rango 1900..2100)
function validaFecha(dia, mes, ano) {
var anoNum = parseInt(ano, 10);
var mesNum = parseInt(mes, 10)-1;
var diaNum = parseInt(dia, 10);
if ((anoNum<1900)||(anoNum>2100)) return false;
var fechaAno = new Date(anoNum,1,1); // Para tener el año a 4 dígitos
var fechaDate = new Date(anoNum, mesNum, diaNum); // Paso a fmt fecha
return (fechaAno.getFullYear() == fechaDate.getFullYear() &&
mesNum == fechaDate.getMonth()) ? true : false;
}
Estos ejemplos están limitados al rango de años válidos a 1900-2100, cambiése en las funciones al rango deseado o añadanse como argumentos en las funciones
Otra de forma de validar si un año es bisiesto es utilizar esta última función usando el año, mes 02 y día 29.