Han sido ya varias las personas que me han pedido alguna función que permita validar una fecha introducida por el usuario en una caja de texto. Cada vez he creado una función parecida y se la he enviado al peticionario, pero cuando mi estimado amigo Cristian me la pidió esta semana decidí ponerla al alcance de todos, pues tanta era su necesidad por parte de los autores web.
En realidad es una función sencilla, pero creo que muy instructiva, ya que maneja diferentes métodos propios de JavaScript que normalmente se utilizan poco, a pesar de ser muy útiles.
El código completo del script es el que sigue (al final lo comentaremos un poco):
Codigo Fuente
Comentarios:
1. Recogemos la fecha introducida por el usuario en la variable global "a", y luego vamos sacando de ella el día, el mes y el año mediante el método split(). Este método de manejo de cadenas, implementado desde la versión 1.3 de JavaScript y desde la versión 3 de JScript, busca en una cadena las subcadenas contenidas entre las diferentes apariciones del caracter delimitador fijado.
La sintaxis general de este método es:
cadena.split("caracter")[n]
donde "caracter" es el caracter delimitador entre las subcadenas, y [n] representa el índice de aparición del caracter en la cadena, empezando desde 0.
2. Hemos creado una función específica para comprobar si un año determinado es bisiesto, en la que usamos como base el operador modulo (resto de la división entera), %, cuya sintaxis general es:
c = a % b
y que obtiene el resto de dividir el número a entre el número b.
3. Lo que sigue es fácil. Vamos comprobando los días máximos que puede tener cada mes y que el mes introducido séa válido. En caso de error damos el foco a la caja de texto (mediante el método focus()) y seleccionamos el texto introducido en ella (mediante el método select()), deteniendo la ejecución de la función mediante la sentencia return.