Funciones para validar fechas con Javascript
Seguramente a la hora de validar fechas con Javascript has tenido que ponerte a buscar funciones para relizar estas validaciones.
Bien, pues hoy os vamos a dejar una serie de funciones listas para utilizar:
- Validar el formato de la fecha:
function validarFormatoFecha(campo) {
var RegExPattern = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/;
if ((campo.match(RegExPattern)) && (campo!='')) {
return true;
} else {
return false;
}
}
Esta función nos validará utilizando una expresión regular si nuestra variable corresponde con el formato de una fecha corriente, como por ejemplo – 13/09/1985. Devolverá true si la fecha es correcta y false si es incorrecta o la variable está vacía.
- Validar si la fecha introducida es real:
Para validar si la fecha introducida es real, es decir, que corresponde al calendario, tenemos las 2 funciones siguientes.
function existeFecha(fecha){
var fechaf = fecha.split("/");
var day = fechaf[0];
var month = fechaf[1];
var year = fechaf[2];
var date = new Date(year,month,'0');
if((day-0)>(date.getDate()-0)){
return false;
}
return true;
}
function existeFecha2 (fecha) {
var fechaf = fecha.split("/");
var d = fechaf[0];
var m = fechaf[1];
var y = fechaf[2];
return m > 0 && m < 13 && y > 0 && y < 32768 && d > 0 && d <= (new Date(y, m, 0)).getDate();
}
Estas dos funciones serían las equivalentes a checkdate en PHP.
- Validar si la fecha introducida es anterior o menor a la actual:
function validarFechaMenorActual(date){
var x=new Date();
var fecha = date.split("/");
x.setFullYear(fecha[2],fecha[1]-1,fecha[0]);
var today = new Date();
if (x >= today)
return false;
else
return true;
}
Esta función nos indica si la fecha introducida es anterior o menor que la fecha actual. Si devuelve true significa que la fecha es anterior, y si devuelve false significa que la fehca introducida es posterior a la actual.
Lo mejor es combinar estas funciones para validar nuestra fecha lo máximo posible y evitar que se introduzcan fechas erróneas. Por eso siempre deberíamos hacer lo siguiente:
var fecha = "13/09/1985";
if(validarFormatoFecha(fecha)){
if(existeFecha(fecha)){
alert("La fecha introducida es correcta.");
}else{
alert("La fecha introducida no existe.");
}
}else{
alert("El formato de la fecha es incorrecto.");
}