Fecha válida con 3 inputs Javascript [SOLUCIONADO]

Implementación de validación de fechas en formularios web

La verificación de fechas dentro de aplicaciones es una tarea frecuente para los desarrolladores y es crucial que se efectúe de manera precisa, ya que de esto depende la integridad de los datos que se manejan. Implementar un sistema de tres campos separados para la introducción de día, mes y año respectivamente, es una metodología estándar y ampliamente aceptada.

Estructura de campos de fecha en el formulario

Para esta implementación, utilizamos tres inputs distintos: uno para el día, uno para el mes y otro para el año. Habilitamos al usuario para ingresar cada parte de la fecha en su respectivo campo, lo que simplifica la tarea de validación y minimiza los errores de entrada.

HTML para el formulario de fecha

El HTML de nuestro formulario incluirá tres campos de entrada y un botón para ejecutar la validación. A continuación, presentamos el código necesario:

<form id="form-fecha">
    <label for="dia">Día:</label>
    <input type="text" id="dia" maxlength="2">
    <br>
    <label for="mes">Mes:</label>
    <input type="text" id="mes" maxlength="2">
    <br>
    <label for="año">Año:</label>
    <input type="text" id="año" maxlength="4">
    <br>
    <button type="button" onclick="validarFecha()">Validar Fecha</button>
</form>
        


JavaScript para la validación

El corazón de nuestra validación reside en la función validarFecha, la cual se encarga de asegurarse que los valores ingresados corresponden a una fecha real y viable. Aquí se puede aplicar un análisis específico que puede incluir la evaluación de fechas futuras, fechas pasadas, y otros criterios relevantes.

El siguiente fragmento de código en JavaScript representa nuestra lógica de validación:

function validarFecha() {
    var dia = document.getElementById('dia').value;
    var mes = document.getElementById('mes').value;
    var año = document.getElementById('año').value;

    if (!dia || !mes || !año) {
        alert('Por favor, rellene todos los campos de la fecha.');
        return false;
    }

    dia = parseInt(dia, 10);
    mes = parseInt(mes, 10);
    año = parseInt(año, 10);

    if (isNaN(dia) || isNaN(mes) || isNaN(año)) {
        alert('Los valores ingresados deben ser numéricos.');
        return false;
    }

    if (dia < 1 || dia > 31) {
        alert('El día ingresado no es válido.');
        return false;
    }

    if (mes < 1 || mes > 12) {
        alert('El mes ingresado no es válido.');
        return false;
    }

    if (año < 1000 || año > 3000) {
        alert('El año ingresado no es válido.');
        return false;
    }

    var date = new Date(año, mes - 1, dia);
    if (date.getFullYear() !== año || date.getMonth() + 1 !== mes || date.getDate() !== dia) {
        alert('La fecha ingresada no es válida.');
        return false;
    }

    alert('La fecha es válida.');
    return true;
}
        


Dinámicas de la validación y casos específicos

La función validarFecha que hemos desarrollado considera diversos escenarios para garantizar la corrección de los valores ingresados. No solo se limita a verificar que los valores proporcionados sean numéricos, sino que también confirma que correspondan a una fecha posible dentro del calendario gregoriano.

Algunas mejoras que se pueden implementar a futuro son la validación de años bisiestos para la correspondiente adaptación en el mes de febrero o incluso la restricción de fechas futuras o pasadas según los requerimientos del proyecto en que se aplique la validación.

Explicación detallada de la función JavaScript

Analicemos la función de validación paso a paso:

  • Recuperación de valores: Primero, se obtienen los valores ingresados de los campos de texto a través de su identificador o id.
  • Comprobación de campos vacíos: Se verifica si alguno de los campos está vacío. De ser así, se notifica al usuario que es necesario completar todos los campos.
  • Parsing numérico: Se intenta convertir los valores a números enteros. Si esto falla, se informa al usuario que los datos ingresados deben ser numéricos.
  • Validación de rangos: Se comprueban los valores admitidos para días, meses y años. Por ejemplo, no se podrán aceptar valores mayores a 31 en el día ni mayores a 12 en el mes.
  • Creación del objeto Date: Se instancia un objeto Date de JavaScript con los valores proporcionados y se comprueba si los datos concuerdan con los valores de la instancia. De no ser así, se avisa al usuario que la fecha no es correcta.
  • Confirmación de fecha válida: Finalmente, si todos los chequeos son válidos, se informa al usuario que la fecha es correcta.

Consideraciones finales sobre la validación de campos de fecha

La verificación de la integridad de las fechas es vital en cualquier sistema que maneje este tipo de información. Un enfoque dividido y modular, como es el caso de separar la fecha en día, mes y año nos permite tener un mejor control y ofrecer una experiencia de usuario final más asequible.

Es importante recordar que la mejora continua del código es esencial, por lo que siempre debe estar abierto a optimizaciones. Además, cabe mencionar que esta validación puede ser complementada con herramientas adicionales de JavaScript como frameworks o librerías especializadas en el manejo de fechas como Moment.js para dotar de mayor flexibilidad y precisión a nuestra implementación.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad