Validar formato de fecha con Javascript
Escrito por J.F. el Lunes, 10 de Diciembre del 2007 a las 20:20
Un ejemplo, mediante el uso de 2 funciones, para validar que el formato de una fecha sea válido (mm/dd/aaaa) con Javascript. Tan solo necesita recibir el objeto, y al salir del campo valida si la fecha tiene un formato correcto o no. Las funciones Javascript a usar son las siguientes:
-
function esFechaValida(fecha){
-
if (fecha != undefined && fecha.value != "" ){
-
if (!/^\d{2}\/\d{2}\/\d{4}$/.test(fecha.value)){
-
alert("formato de fecha no válido (dd/mm/aaaa)");
-
return false;
-
}
-
var dia = parseInt(fecha.value.substring(0,2),10);
-
var mes = parseInt(fecha.value.substring(3,5),10);
-
var anio = parseInt(fecha.value.substring(6),10);
-
-
switch(mes){
-
case 1:
-
case 3:
-
case 5:
-
case 7:
-
case 8:
-
case 10:
-
case 12:
-
numDias=31;
-
break;
-
case 4: case 6: case 9: case 11:
-
numDias=30;
-
break;
-
case 2:
-
if (comprobarSiBisisesto(anio)){ numDias=29 }else{ numDias=28};
-
break;
-
default:
-
alert("Fecha introducida errónea");
-
return false;
-
}
-
-
if (dia>numDias || dia==0){
-
alert("Fecha introducida errónea");
-
return false;
-
}
-
return true;
-
}
-
}
-
function comprobarSiBisisesto(anio){
-
if ( ( anio % 100 != 0) && ((anio % 4 == 0) || (anio % 400 == 0))) {
-
return true;
-
}
-
else {
-
return false;
-
}
-
}
La segunda tan sólo verifica si el año es bisiesto, para permitir en Febrero poner 28 ó 29 días. Aquí tienes un código de ejemplo, que al salir del campo verifica si lo escrito en el campo de texto tiene el formato de fecha dd/mm/aaaa.
-
function esFechaValida(fecha){
-
if (fecha != undefined && fecha.value != "" ){
-
if (!/^\d{2}\/\d{2}\/\d{4}$/.test(fecha.value)){
-
alert("formato de fecha no válido (dd/mm/aaaa)");
-
return false;
-
}
-
var dia = parseInt(fecha.value.substring(0,2),10);
-
var mes = parseInt(fecha.value.substring(3,5),10);
-
var anio = parseInt(fecha.value.substring(6),10);
-
-
switch(mes){
-
case 1:
-
case 3:
-
case 5:
-
case 7:
-
case 8:
-
case 10:
-
case 12:
-
numDias=31;
-
break;
-
case 4: case 6: case 9: case 11:
-
numDias=30;
-
break;
-
case 2:
-
if (comprobarSiBisisesto(anio)){ numDias=29 }else{ numDias=28};
-
break;
-
default:
-
alert("Fecha introducida errónea");
-
return false;
-
}
-
-
if (dia>numDias || dia==0){
-
alert("Fecha introducida errónea");
-
return false;
-
}
-
return true;
-
}
-
}
-
-
function comprobarSiBisisesto(anio){
-
if ( ( anio % 100 != 0) && ((anio % 4 == 0) || (anio % 400 == 0))) {
-
return true;
-
}
-
else {
-
return false;
-
}
-
}
-
</script>
-
</head>
-
-
<input type="text" onBlur="esFechaValida(this);"/>
-
</body>
-
-
</html>
Categoria: Javascript
- Añadir este post a
- Del.icio.us -
- Meneame -
- Digg -
- Webeame
Entradas relacionadas
Comentario de Manuel Salazar
Realizado el Domingo, 18 de Mayo del 2008 a las 0:58
¡Excelente!, era lo que necesitaba, muy limpio y profesional, me sirvió mucho, felicidades y muchas GRACIAS.
Comentario de J.F.
Realizado el Domingo, 25 de Mayo del 2008 a las 13:37
De nada, un saludo.
Comentario de Enrique Arriaga
Realizado el Viernes, 20 de Junio del 2008 a las 18:29
Muchas gracias. Muy útil.
Felicidades.
Comentario de Alejandro
Realizado el Miércoles, 6 de Agosto del 2008 a las 9:23
necesitaría saber como validar varias fechas a la vez en un formulario, tengo 6 fechas y desearía validarlas.
Desde ya muchas gracias por todo.
Comentario de Alejandro
Realizado el Miércoles, 6 de Agosto del 2008 a las 9:36
Gracias recien me doy cuenta de la forma!!!!
Comentario de Nero
Realizado el Miércoles, 12 de Noviembre del 2008 a las 4:34
Muy prolijo y bien realizado, perfecto! ![]()
Comentario de Daniel
Realizado el Miércoles, 26 de Noviembre del 2008 a las 21:34
Excelente codigo ;-). Me sirvio de mucho
Comentario de Santi
Realizado el Martes, 13 de Enero del 2009 a las 12:40
Excelente! Sencillo y eficaz aún sabiendo lo justo de javascript.
Comentario de Rober
Realizado el Martes, 3 de Febrero del 2009 a las 12:36
Mira que hay maneras de hacer las cosas, y sólo una la óptima. Enhorabuena por el script, tanto por sencillez como por eficacia
Comentario de Gloria
Realizado el Jueves, 2 de Abril del 2009 a las 0:20
Gracias, me sirvió de mucho! nada complicado, sencillo y al punto
Comentario de Diego
Realizado el Martes, 12 de Mayo del 2009 a las 23:13
la raja socio, ercelente kode
bueno, bonito y barato
saludos
Comentario de geniusdraw
Realizado el Sábado, 23 de Mayo del 2009 a las 6:20
muchas gracias por la informacion, me sirvio muchisimo, saludos
Comentario de carles
Realizado el Martes, 9 de Junio del 2009 a las 9:26
Muy bueno me fue muy util gracias.
Comentario de Kelvin
Realizado el Miércoles, 29 de Julio del 2009 a las 21:27
This code is so very well
RECOMMENDED!!!
Comentario de Monardes
Realizado el Martes, 13 de Octubre del 2009 a las 15:28
El codigo es muy claro y preciso me ayudó mucho!!
gracias!!
Comentario de Pichel30
Realizado el Jueves, 5 de Noviembre del 2009 a las 22:40
Muchas gracias excelente codificación, muy limpia y clara
Comentario de Marvin Castillo
Realizado el Lunes, 9 de Noviembre del 2009 a las 1:55
Buen código … gracias!
Comentario de mon
Realizado el Miércoles, 2 de Diciembre del 2009 a las 18:51
Excelente!! Me ha servido de gran ayuda
Comentario de NitroBSD
Realizado el Jueves, 17 de Diciembre del 2009 a las 23:02
Gracias !!!!!!!! Me uno al comentario de Pichel30 — Codificacion muy limpia y clara –
Comentario de Tony
Realizado el Miércoles, 24 de Febrero del 2010 a las 19:57
Gracias!!..gran aporte y de mucha ayuda…informacion asi es la que necesitamos.
