Hola
La parte de ir verificando por separado día, mes, año, bisiesto, etc. se puede simplificar aprovechando las funciones de fecha de javascript
:
Código HTML:
Validar fecha:
<script>
function esFecha(formu)
{
var elDia=formu.txt_dia.value
var elMes=formu.txt_mes.value-1
var elAnio=formu.txt_anio.value
var ff = new Date(elAnio, elMes, elDia)
if ( ff.getDate() != elDia ) return false
if ( ff.getMonth() != elMes ) return false
if ( ff.getFullYear() != elAnio ) return false
return true
}
</script>
<form>
<input type="text" name="txt_dia" size="4">/
<input type="text" name="txt_mes" size="4">/
<input type="text" name="txt_anio" size="4">
<input type="button" value="Validar fecha" onClick="alert(esFecha(this.form))">
</form>
Lo he puesto con 3 campos de texto, pero es fácil adaptarlo a otra forma de entrada; lo importante es que evitas andar verificando los 1900, los 2000, los meses de 30 y 31, los bisiestos, etc.