hola, saludo a todos.
me gustaría saber en que estoy fallando. cuando realizo el despliegue en vercel o en github pages no me toma las validaciones. en local con live server si. ya realice el push nuevamente pero no me toma ninguna validación. :\
hola, saludo a todos.
me gustaría saber en que estoy fallando. cuando realizo el despliegue en vercel o en github pages no me toma las validaciones. en local con live server si. ya realice el push nuevamente pero no me toma ninguna validación. :\
Hola Andres. A mi me tomo en ambos sitios las validaciones, cambie los nombres de los archivos donde tenian _ los quite, cambie el nombre de registro.html a index.html te paso los codogos en distintas paginas son mas de 5000 caracteres que raro, espero des con el error
head index / registro
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Doguito Petshop | Crear cuenta</title>
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Pacifico&display=swap" rel="stylesheet">
<link rel="stylesheet" href="./assets/css/base/base.css">
<link rel="stylesheet" href="./assets/css/registro.css">
<link rel="stylesheet" href="./assets/css/componentes/card.css">
<link rel="stylesheet" href="./assets/css/componentes/inputs.css">
<link rel="stylesheet" href="./assets/css/componentes/button.css">
</head>
resto de codigo index / registro
<body>
<main class="container flex flex--column flex--center">
<div class="cadastro-cabecalho">
<img src="./assets/img/doguito.svg" alt="Logo Doguito" class="registry-header__logo">
<h1 class="registry-header__title">PetShop</h1>
</div>
<section class="cartao">
<h2 class="card__title">Completa tu registro</h2>
<form action="./registro_concluido.html" class="formulario flex flex--column">
<fieldset>
<legend class="form__label">Información básica</legend>
<div class="input-container">
<input name="name" id="name" class="input" type="text" placeholder="Nombre" required data-tipo="nombre">
<label class="input-label" for="name">Nombre</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
<div class="input-container">
<input name="email" id="email" class="input" type="email" placeholder="Email" required data-tipo="email">
<label class="input-label" for="email">Email</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
<div class="input-container">
<input name="password" id="password" class="input" type="password" placeholder="Contraseña" required pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[ !@#$%^&*_=+-]).{6,12}$" title="Al menos 6 caracteres, máximo 12, debe contener una letra minúscula, una letra mayúscula, un número y no puede contener caracteres especiales." data-tipo="password">
<label class="input-label" for="password">Contraseña</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
</fieldset>
<fieldset>
<legend class="form__label">Información personal</legend>
<div class="input-container">
<input name="birth" id="birth" class="input" type="date" placeholder="Fecha de nacimento" required data-tipo="nacimiento">
<label class="input-label" for="birth">Fecha de nacimiento</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
<div class="input-container">
<input name="phoneNumber" id="phoneNumber" class="input" type="text" placeholder="Número telefónico" pattern="\d{10}" required minlegth="10" maxlength="10" data-tipo="numero">
<label class="input-label" for="phoneNumber">Número telefónico</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
</fieldset>
<fieldset>
<legend class="form__label">Dirección</legend>
<div class="input-container">
<input name="address" id="address" class="input" type="text" placeholder="Dirección" required pattern="[\s\S]{10,40}" data-tipo="direccion">
<label class="input-label" for="address">Dirección completa</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
<div class="input-container">
<input name="city" id="city" class="input" type="text" placeholder="Ciudad" required pattern="[\s\S]{4,30}" data-tipo="ciudad">
<label class="input-label" for="city">Ciudad</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
<div class="input-container">
<input name="state" id="state" class="input" type="text" placeholder="Estado" required pattern="[\s\S]{4,30}" data-tipo="estado">
<label class="input-label" for="state">Estado</label>
<span class="input-message-error">Este campo no es valido</span>
</div>
</fieldset>
<button class="button">Registrar</a>
</form>
</section>
</main>
<script src="./js/app.js" type="module"></script>
</body>
</html>
VALIDACIONES
export function valida(input) {
const tipoDeInput = input.dataset.tipo;
if (validadores[tipoDeInput]) {
validadores[tipoDeInput](input);
}
if (input.validity.valid) {
input.parentElement.classList.remove("input-container--invalid");
input.parentElement.querySelector(".input-message-error").innerHTML = "";
} else {
input.parentElement.classList.add("input-container--invalid");
input.parentElement.querySelector(".input-message-error").innerHTML =
mostrarMensajeDeError(tipoDeInput, input);
}
}
const tipoDeErrores = [
"valueMissing",
"typeMismatch",
"patternMismatch",
"customError",
];
const mensajesDeError = {
nombre: {
valueMissing: "El campo nombre no puede estar vacío",
},
email: {
valueMissing: "El campo correo no puede estar vacío",
typeMismatch: "El correo no es válido",
},
password: {
valueMissing: "El campo contraseña no puede estar vacío",
patternMismatch:
"Al menos 6 caracteres, máximo 12, debe contener una letra minúscula, una letra mayúscula, un número y no puede contener caracteres especiales.",
},
nacimiento: {
valueMissing: "Este campo no puede estar vacío",
customError: "Debes tener al menos 18 años de edad",
},
numero: {
valueMissing: "Este campo no puede estar vacío",
patternMismatch: "El formato requerido es XXXXXXXXXX 10 números",
},
direccion: {
valueMissing: "Este campo no puede estar vacío",
patternMismatch: "La dirección debe contener entre 10 a 40 caracteres.",
},
ciudad: {
valueMissing: "Este campo no puede estar vacío",
patternMismatch: "La ciudad debe contener entre 4 a 30 caracteres.",
},
estado: {
valueMissing: "Este campo no puede estar vacío",
patternMismatch: "El estado debe contener entre 4 a 30 caracteres.",
},
};
const validadores = {
nacimiento: (input) => validarNacimiento(input),
};
function mostrarMensajeDeError(tipoDeInput, input) {
let mensaje = "";
tipoDeErrores.forEach((error) => {
if (input.validity[error]) {
console.log(tipoDeInput, error);
console.log(input.validity[error]);
console.log(mensajesDeError[tipoDeInput][error]);
mensaje = mensajesDeError[tipoDeInput][error];
}
});
return mensaje;
}
function validarNacimiento(input) {
const fechaCliente = new Date(input.value);
let mensaje = "";
if (!mayorDeEdad(fechaCliente)) {
mensaje = "Debes tener al menos 18 años de edad";
}
input.setCustomValidity(mensaje);
}
function mayorDeEdad(fecha) {
const fechaActual = new Date();
const diferenciaFechas = new Date(
fecha.getUTCFullYear() + 18,
fecha.getUTCMonth(),
fecha.getUTCDate()
);
return diferenciaFechas <= fechaActual;
}