Validar el formato de una fecha

por

Seguramente todo nos habremos encontrado con este problema más de una vez y es el de comprobar que una fecha tiene el formato correcto antes de enviarse el formulario.

Para ello, os traigo un script que os lo haraá de forma totalmente fiable para todos los navegadores actuales y su implementación es sumamente sencilla.

El script hace que cuando perdemos el foco sobre el input sobre el que escribimos la fecha, compruebe su formato y si no es correcto añada un icono de advertencia a la derecha del input y además, ponga el input con un fondo amarillo para que destaque que se ha introducido mal.

Debemos tener en cuenta, también, que el formato que nosotros queremos es dd-mm-aaaa. Si quisieramos otro, tan solo deberíamos modificar la expresión regular de la función.

Nosotros hemos puesto una ruta de imagen representativa que cada uno luego debería poner la suya, en nuestro caso es un icono de alerta amarillo.

Por último, acordaros de tener en incluida la librería JQuery ya que ese código se vale de ella.

El código es el siguiente:


function esFechaValida(fecha){

  if (fecha != undefined && fecha.value != "" ){

    if (!/^\d{2}\-\d{2}\-\d{4}$/.test(fecha.value)){

      if($(fecha).next().attr('class')=='advertencia-fecha'){}

      else{

        $(fecha).after('Advertencia Fecha Erronea');

        $(fecha).css('background','#fff09e');

      }

      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:

      if($(fecha).next().attr('class')=='advertencia-fecha'){}

      else{

        $(fecha).after('Advertencia Fecha Erronea');

        $(fecha).css('background','#fff09e');

      }

    return false;

  }

  if (dia>numDias || dia==0){

    if($(fecha).next().attr('class')=='advertencia-fecha'){}

    else{

      $(fecha).after('Advertencia Fecha Erronea');

      $(fecha).css('background','#fff09e');

    }

  return false;

  }

  if($(fecha).next().attr('class')=='advertencia-fecha'){

 

    $(fecha).next().remove();

    $(fecha).css('background','url(/images/forms/input_shadow.png) no-repeat');

  }

  return true;

  }

}

function comprobarSiBisisesto(anio){

  if ( ( anio % 100 != 0) && ((anio % 4 == 0) || (anio % 400 == 0))) {

    return true;

  }

  else {

    return false;

  }

};

Una vez hayamos incluido este código en nuestro archivo javascript correspondiente debemos de inicilizar la función, para ello:


$("#fecha").live('blur',function(){

  var aux=this;

  setTimeout(function(){esFechaValida(aux);}, 200);

});

Donde "fecha" es el ID del input en el que escribimos la fecha. Con ésto ya tendríais listo el validador de la fecha.

Espero que os sea útil.

COMENTARIOS

11-03-2013 22:57:57
Hola Alfredo, lo primero muchas gracias por tu visita :). La tarea que quieres hacer se puede hacer de 2 maneras diferentes: con PHP o con JS.

Personalmente te recomiendo hacerlo con JS ya que el resultado es mucho más visual y bonito.

Si quieres hacerlo con PHP tienes este artículo http://sergioglez.webcindario.com/cargarArticulo.php?id=19 que te explica de manera detallada como generar unas gráficas. En tu caso, si tus datos los quieres sacar de mediante MYSQL tan sólo debes hacer la petición antes de generar la gráfica y a partir de los datos que obitnees compones 2 arrays con los datos del eje X y eje Y(en el artículo anterior se llaman $dataX y $dataY).

Si por el contrario sigues mis recomendaciones y usas JS te recomiendo que utilices la librería Highcharts que es realmente buena y como verás en sus demos el resultado es muy bonito.

Para enlazar la librería a tu MYSQL debes de componer los arrays de datos justo antes de generar la gráfica y para ello debes hacer una peticion AJAX a un archivo PHP que se encargue de ejecutar la consulta a la BBDD y pinte los resultados en formato JSON o XML por ejemplo. Estos formatos serán los que recogeras mediante AJAX y los utilizarás para pinta la gráfica con Highcharts.

Pruébalo y me cuentas :)
11-03-2013 17:38:10
Hola Sergio Antes que nada felcitarte por tu pagina muy buena. Yo soy nuevo en este tipo de lenguaje y ahora estoy trabajando en un proyecto utilizando PHP, HTML, CSS , JS y MySQL pero aun estoy muy verde ya he logrado hacer la mayoria de lo que necesitaba pero aun hay detalles que no logro hacer y vi que en tus trabajos tienes estas opciones: Generación de estadísticas generales. Generación de estadísticas específicas. Generación de gráficas personalizables. Generación de informes personalizables. De que se trata mi proyecto? cree una pagina que contiene formularios en PHP y HTML para ser capturados y almacenados en MySQL pero ahora quiero graficar esa informacion desde MySQL y generar reportes en mi pagina ya he leido algunas cosas pero no he comprendido del todo como aplicarlo y sobre todo no se si por medio de PHP puedo graficar mis tablas desde MySQL estableciendo una conexion. O tal vez no hay open source para hacer lo que quiero, por favor serias tan amable de orientarme Muchas gracias Alfredo

DEJA TU COMENTARIO