Para validar fechas: //*********************************************************************************************** // validarFecha(dia,mes, año) // // Valida que el día y el mes introducidos sean correctos. Además valida que el año introducido // sea o no bisiesto // //*********************************************************************************************** function validarFecha(dia,mes,anio) { var elMes = parseInt(mes); if(elMes>12) return 1; // MES FEBRERO if(elMes == 2){ if(esBisiesto(anio)){ if(parseInt(dia) > 29){ return 1; } else return 0; } else{ if(parseInt(dia) > 28){ return 1; } else return 0; } } //RESTO DE MESES if(elMes== 4 || elMes==6 || elMes==9 || elMes==11){ if(parseInt(dia) > 30){ return 1; } } return 0; } //***************************************************************************************** // esBisiesto(anio) // // Determina si el año pasado com parámetro es o no bisiesto //***************************************************************************************** function esBisiesto(anio) { var BISIESTO; if(parseInt(anio)%4==0){ if(parseInt(anio)%100==0){ if(parseInt(anio)%400==0){ BISIESTO=true; } else{ BISIESTO=false; } } else{ BISIESTO=true; } } else BISIESTO=false; return BISIESTO; } Para validar horas, te aconsejo que las pintes sin dar opción a errores: /* getHora(indice, horas, minutos) Escribe en la página html el campo de la hora como un tipo <select> con valores preseleccionados: - Indice: Nos sirve para dar el "name" a cada campo select que construyamos, de modo que si hay varios en una misma página HTMK, cada uno tenga un nombre distinto - hora: Hora predeterminado del campo select - minutos: Minutos predeterminado */ function getHora(indice, horas, minutos) { var hh = "00"; var mm = "00"; if (arguments.length > 1) { hh = horas; mm = minutos; } document.write("<select name='seHoraHH" + indice + "'>"); for(var i=0;i<24;i++) { var a; if(i<10) a="0"+i; else a=i; if (a == hh) { document.write("<option value='"+a+"' selected>"+i+"</option>"); } else { document.write("<option value='"+a+"'>"+i+"</option>"); } } document.write("</select>"); document.write(" : "); document.write("<INPUT TYPE='text' MAXLENGTH='2' SIZE='2' NAME='txHoraMM" + indice + "' VALUE='" + mm + "'>"); }