Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

No me guarda registro

Si valida que es menor de 18 años, pero al ingresar un mayor de edad no genera ningun error ni registra.

const inputNacimiento = document.querySelector("#birth");

inputNacimiento.addEventListener("blur", (evento) => {
    validarNacimiento(evento.target);
});

function validarNacimiento(input){
    const fechaCliente = new Date(input.value);
    let mensaje = " ";
    if(!mayorDeEdad(fechaCliente)){
        mensaje = " Debes tener al menos 18 años";
    }

    input.setCustomValidity(mensaje);
};

function mayorDeEdad(fecha) {
    const fechaActual = new Date();
    const diferenciaFechas = new Date(
        fecha.getUTCFullYear()+18, 
        fecha.getUTCMonth(), 
        fecha.getUTCDate()
        );
    return diferenciaFechas <= fechaActual;

}
1 respuesta

¡Hola Leon! Espero que estés bien.

Según el código que compartiste, la función validarNacimiento solo establece un mensaje de error si la persona no es mayor de edad. Si la persona es mayor de edad, entonces el mensaje de error es una cadena vacía, lo que significa que no hay error y el formulario se puede enviar.

Para solucionar esto, puedes agregar una condición en la función validarNacimiento que establezca un mensaje de error si la persona es mayor de edad. Por ejemplo:

function validarNacimiento(input){
    const fechaCliente = new Date(input.value);
    let mensaje = " ";
    if(!mayorDeEdad(fechaCliente)){
        mensaje = "Debes tener al menos 18 años";
    } else {
        mensaje = "Debes ser menor de 18 años";
    }

    input.setCustomValidity(mensaje);
}

Con este cambio, si la persona es mayor de edad, se establecerá un mensaje de error que dice "Debes ser menor de 18 años", lo que evitará que el formulario se envíe y mostrará un mensaje de error al usuario.

Espero que esta solución te ayude.

¡Saludos!

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios!