From b6ac5d10a2b14dba5addfc9a80ea7f4219bfc741 Mon Sep 17 00:00:00 2001 From: MalconH Date: Fri, 1 Sep 2023 17:07:09 -0300 Subject: [PATCH 1/3] =?UTF-8?q?Crea=20la=20estructura=20b=C3=A1sica=20de?= =?UTF-8?q?=20archivos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 4 ++-- tarea/clase 8/tarea 1/main.js | 4 ++++ tarea/{ => clase 8/tarea 2}/tarea-clase-8.js | 0 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 tarea/clase 8/tarea 1/main.js rename tarea/{ => clase 8/tarea 2}/tarea-clase-8.js (100%) diff --git a/index.html b/index.html index 837209c2..9f25d7b8 100644 --- a/index.html +++ b/index.html @@ -110,9 +110,9 @@

Carta a santa

- + - + diff --git a/tarea/clase 8/tarea 1/main.js b/tarea/clase 8/tarea 1/main.js new file mode 100644 index 00000000..b6cdc21d --- /dev/null +++ b/tarea/clase 8/tarea 1/main.js @@ -0,0 +1,4 @@ +/* +Tarea 1: - fixear bug de errores que se agregan infinitamente + - redireccionar al usuario cuando no haya errores al hacer submit del form +*/ diff --git a/tarea/tarea-clase-8.js b/tarea/clase 8/tarea 2/tarea-clase-8.js similarity index 100% rename from tarea/tarea-clase-8.js rename to tarea/clase 8/tarea 2/tarea-clase-8.js From d30f2c43e48d84be843b5eeced77e5c51231357b Mon Sep 17 00:00:00 2001 From: MalconH Date: Mon, 4 Sep 2023 15:24:46 -0300 Subject: [PATCH 2/3] Crea la tarea 1 de la clase 8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La tarea consistía en fixear un bug donde los errores que se mostraban en la interfaz se agregaban infinitamente y en crear la funcionalidad de redirigir al usuario cuando hacia un submit exitoso del form --- tarea/clase 8/tarea 1/index.html | 116 +++++++++++++++++++++++++++++++ tarea/clase 8/tarea 1/main.js | 112 +++++++++++++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 tarea/clase 8/tarea 1/index.html diff --git a/tarea/clase 8/tarea 1/index.html b/tarea/clase 8/tarea 1/index.html new file mode 100644 index 00000000..315a440f --- /dev/null +++ b/tarea/clase 8/tarea 1/index.html @@ -0,0 +1,116 @@ + + + + + + Carta a Papá Noel + + + + + + + + +
+ +
+ +
+ Imagen de un regalo +
+

Querido Santa,

+

Mi nombre es y vivo en + . +

+ +

Creo que este año he sido + Muy bueno + Bueno + Mas o menos. +

+

Este año realmente me gustaría recibir

+

+ +

+ +
    +
+ +

+ +

+
+ +
+ Tu envío fue exitoso! +
+ + +
+ + + + + + + diff --git a/tarea/clase 8/tarea 1/main.js b/tarea/clase 8/tarea 1/main.js index b6cdc21d..37f595d0 100644 --- a/tarea/clase 8/tarea 1/main.js +++ b/tarea/clase 8/tarea 1/main.js @@ -2,3 +2,115 @@ Tarea 1: - fixear bug de errores que se agregan infinitamente - redireccionar al usuario cuando no haya errores al hacer submit del form */ + + +const $form = document.querySelector("#carta-a-santa"); +$form.onsubmit = validarFormulario; + +function validarFormulario(event) { + const $form = document.formulario; + + const nombre = $form.nombre.value; + const ciudad = $form.ciudad.value; + const descripcionRegalo = $form["descripcion-regalo"].value; + + const errorNombre = validarNombre(nombre); + const errorCiudad = validarCiudad(ciudad); + const errorDescripcionRegalo = validarDescripcionRegalo(descripcionRegalo); + + const errores = { + nombre: errorNombre, + ciudad: errorCiudad, + "descripcion-regalo": errorDescripcionRegalo + }; + + const esExito = manejarErrores(errores) === 0; + + if (esExito) { + $form.className = "oculto"; + document.querySelector("#exito").className = ""; + setTimeout(redirigirUsuario, 5000); + } + + event.preventDefault(); +} + +function redirigirUsuario() { + window.location.href = "wishlist.html"; +} + +function manejarErrores(errores) { + const keys = Object.keys(errores); + const $errores = document.querySelector("#errores"); + let contadorErrores = 0; + + borrarErrores(); + + keys.forEach(function (key) { + const error = errores[key]; + const $error = document.createElement("li"); + + if (error) { + agregarError(error); + contadorErrores++; + + $form[key].className = "error"; + } else { + $form[key].className = ""; + } + }); + + return contadorErrores; +} + +function agregarError(error) { + const $errores = document.querySelector("#errores"); + const $error = document.createElement("li"); + + $error.textContent = error; + $errores.appendChild($error); +} + +function borrarErrores() { + document.querySelector("#errores").innerHTML = ""; +} + +function validarNombre(nombre) { + if (nombre.length === 0) { + return "Este campo debe tener al menos 1 caracter"; + } + + if (nombre.length >= 50) { + return "Este campo debe tener menos de 50 caracteres"; + } + + if (!/^[a-z]+$/i.test(nombre)) { + return "Este campo sólo acepta letras"; + } + + return ""; +} + +function validarCiudad(ciudad) { + if (ciudad.length === 0) { + return "La ciudad no puede estar vacía"; + } + + return ""; +} + +function validarDescripcionRegalo(descripcionRegalo) { + if (descripcionRegalo.length >= 100) { + return "La descripción no puede tener más de 100 caracteres"; + } + + if (descripcionRegalo.length === 0) { + return "La descripción no puede estar vacía"; + } + + if (!/^[a-z0-9]+$/i.test(descripcionRegalo)) { + return "La descripción sólo puede tener números y letras"; + } + + return ""; +} From 14957d14c5148bd3f4efbc3c1c081c31aab37a62 Mon Sep 17 00:00:00 2001 From: MalconH Date: Mon, 4 Sep 2023 16:28:38 -0300 Subject: [PATCH 3/3] Crea la tarea 2 de la clase 8 --- tarea/clase 8/tarea 2/tarea-clase-8.js | 48 ++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/tarea/clase 8/tarea 2/tarea-clase-8.js b/tarea/clase 8/tarea 2/tarea-clase-8.js index 1b57194d..44bf4072 100644 --- a/tarea/clase 8/tarea 2/tarea-clase-8.js +++ b/tarea/clase 8/tarea 2/tarea-clase-8.js @@ -5,3 +5,51 @@ necesarias. TIP: Las edades no pueden tener decimales. */ + +function validarIntegrantesIngresados(integrantesIngresados) { + const INTEGRANTES_MAXIMOS = 99; + + if (integrantesIngresados <= 0) { + return "La cantidad de integrantes ingresados debe ser mayor que 0"; + } + + if (!/^[0-9]+$/.test(integrantesIngresados)) { + return "La cantidad de integrantes ingresados debe ser un numero válido"; + } + + if (integrantesIngresados > INTEGRANTES_MAXIMOS) { + return "La cantidad de integrantes ingresados no debe ser mayor a " + INTEGRANTES_MAXIMOS; + } + + return ""; +} + +function validarEdad(edad) { + const EDAD_MAXIMA = 199; + + if (edad <= 0) { + return "La edad debe ser mayor que 0"; + } + + if (!/^[0-9]+$/.test(edad)) { + return "La edad debe ser un número válido"; + } + + if (edad >= EDAD_MAXIMA) { + return "La edad no puede ser mayor que " + EDAD_MAXIMA; + } + + return ""; +} + +function validarSalario(salario) { + if (salario <= 0) { + return "El salario debe ser mayor que 0"; + } + + if (!/^[0-9]+$/.test(edad)) { + return "El salario debe ser un monto válido"; + } + + return ""; +}