Hola Jennifer_munn!!!
Yo utilizo esta función para validar las fechas, espero que te sirva:
Código PHP:
function validarFecha( campo ){
if (campo.value == ''){
return;
}
/* Comprobar que el formato es dd/mm/aaaa, aunque si el formato de
fecha que utilizas es otro, puedes cambiar esta parte de comprobación
*/
while (campo.value.indexOf ('.') > - 1 ){
campo.value = campo.value.replace('.', '/');
}
while (campo.value.indexOf ('-') > - 1 ){
campo.value = campo.value.replace('-', '/');
}
var fechaexp = /^dd/dd/dddd$/;
if ((campo.value.indexOf ('/') < 0 ) || (!fechaexp.test(campo.value))){
alert("La fecha de tener el formato dd/mm/aaaa");
campo.focus();
campo.select();
return;
}
/* Obtener la fecha introducida y se separa en dia, mes y año*/
a = campo.value;
dia=a.split("/")[0];
mes=a.split("/")[1];
anyo=a.split("/")[2];
if(anyoBisiesto(anyo))
febrero=29;
else
febrero=28;
/* si el mes introducido es negativo, 0 o mayor que 12, se avisa y se para
la ejecución */
if ((mes<1) || (mes>12)){
alert("El mes introducido no es valido. Por favor, introduzca un mes correcto");
campo.focus();
campo.select();
return;
}
/* si el mes introducido es febrero y el dia es mayor que el
correspondiente al año introducido se avisa y se para la ejecucion */
if ((mes==2) && ((dia<1) || (dia>febrero))){
alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
campo.focus();
campo.select();
return;
}
/* si el mes introducido es de 31 dias y el dia introducido es mayor de
31 se avisa y se para la ejecucion
*/
if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31))){
alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
campo.focus();
campo.select();
return;
}
/* si el mes introducido es de 30 dias y el dia introducido es mayor de
30 se avisa y se para la ejecucion
*/
if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30))){
alert("El dia introducido no es valido. Por favor, introduzca un dia correcto");
campo.focus();
campo.select();
return;
}
/* si el mes año introducido es menor que 1900 o mayor que 2100 se
avisa y se para la ejecución
NOTA: estos valores son una elección, en realidad no son años
erróneos, solo sirve para validar un intervalo de años en caso de ser
necesario */
if ((anyo<1900) || (anyo>2100)){
alert("El año introducido no es valido. Por favor, introduzca un año entre 1900 y 2100");
campo.focus();
campo.select();
return;
}
/* Si ha superado todas las condiciones anteriores es que la fecha
introducida es correcta */
return true;
}
Suerte!