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.
Comentario de Lutaj
Realizado el Viernes, 26 de Marzo del 2010 a las 0:32
Fantástico!! Funciona sin ningún problema. Gracias.
Comentario de Claudio
Realizado el Viernes, 7 de Mayo del 2010 a las 21:34
Muy buen codigo, gracias
Comentario de Pro
Realizado el Martes, 18 de Mayo del 2010 a las 18:18
La funcion esta muy bien solo que cuando se le coloca la fecha 29/02/2000 que es año bisiesto y fecha correcta, la funcion retorna el mensaje de fecha no valida, hay que corregir que no mande ese error con esa fecha que es completamente valida en el calendario.
Comentario de Has hecho mal el algoritmo del año bisiesto , te pongo la corrección
Realizado el Miércoles, 19 de Mayo del 2010 a las 17:52
function comprobarBisiesto(ano){
if(ano % 4 == 0)
{
if ((ano % 100 == 0) && (ano % 400 != 0))
{
return false;
}
else return true;
}
else return false;
}
