jotazetaec

Untitled

Jul 21st, 2025
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { useState } from "react";
  2.  
  3. export default function FormularioGrupo2() {
  4.   const [nombre, setNombre] = useState("");
  5.   const [correo, setCorreo] = useState("");
  6.   const [edad, setEdad] = useState("");
  7.   const [contrasena, setContrasena] = useState("");
  8.   const [confirmarContrasena, setConfirmarContrasena] = useState("");
  9.   const [pais, setPais] = useState("");
  10.   const [errores, setErrores] = useState({});
  11.   const [mensajeExito, setMensajeExito] = useState("");
  12.  
  13.   const validaFormulario = (e) => {
  14.     e.preventDefault();
  15.    
  16.     const nuevosErrores = {};
  17.  
  18.     if (nombre.trim().length < 3) {
  19.       nuevosErrores.nombre = "El nombre debe tener al menos 3 caracteres.";
  20.     }
  21.  
  22.     if (!correo.includes("@") || !correo.endsWith(".com")) {
  23.       nuevosErrores.correo = "Correo inválido.";
  24.     }
  25.  
  26.     if (isNaN(edad) || Number(edad) < 18) {
  27.       nuevosErrores.edad = "Debes ser mayor de edad.";
  28.     }
  29.  
  30.     if (contrasena.length < 6) {
  31.       nuevosErrores.contrasena = "Contraseña muy corta.";
  32.     }
  33.  
  34.     if (contrasena !== confirmarContrasena) {
  35.       nuevosErrores.confirmarContrasena = "Las contraseñas no coinciden.";
  36.     }
  37.  
  38.     if (pais.trim() === "") {
  39.       nuevosErrores.pais = "Selecciona un país.";
  40.     }
  41.  
  42.     setErrores(nuevosErrores);
  43.  
  44.     if (Object.keys(nuevosErrores).length === 0) {
  45.       setMensajeExito(`Registro exitoso para ${nombre}.`);
  46.     } else {
  47.       setMensajeExito("");
  48.     }
  49.   };
  50.  
  51.   return (
  52.     <div>
  53.       <h2>Formulario extendido</h2>
  54.       <form onSubmit={validaFormulario}>
  55.         <input
  56.           type="text"
  57.           placeholder="Nombre"
  58.           value={nombre}
  59.           onChange={(e) => setNombre(e.target.value)}
  60.         />
  61.         {errores.nombre && <p>{errores.nombre}</p>}
  62.  
  63.         <input
  64.           type="email"
  65.           placeholder="Correo"
  66.           value={correo}
  67.           onChange={(e) => setCorreo(e.target.value)}
  68.         />
  69.         {errores.correo && <p>{errores.correo}</p>}
  70.  
  71.         <input
  72.           type="number"
  73.           placeholder="Edad"
  74.           value={edad}
  75.           onChange={(e) => setEdad(e.target.value)}
  76.         />
  77.         {errores.edad && <p>{errores.edad}</p>}
  78.  
  79.         <input
  80.           type="password"
  81.           placeholder="Contraseña"
  82.           value={contrasena}
  83.           onChange={(e) => setContrasena(e.target.value)}
  84.         />
  85.         {errores.contrasena && <p>{errores.contrasena}</p>}
  86.  
  87.         <input
  88.           type="password"
  89.           placeholder="Confirmar contraseña"
  90.           value={confirmarContrasena}
  91.           onChange={(e) => setConfirmarContrasena(e.target.value)}
  92.         />
  93.         {errores.confirmarContrasena && <p>{errores.confirmarContrasena}</p>}
  94.  
  95.         <select value={pais} onChange={(e) => setPais(e.target.value)}>
  96.           <option value="">Selecciona un país</option>
  97.           <option value="Ecuador">Ecuador</option>
  98.           <option value="Colombia">Colombia</option>
  99.           <option value="México">México</option>
  100.         </select>
  101.         {errores.pais && <p>{errores.pais}</p>}
  102.  
  103.         <button type="submit">Enviar</button>
  104.       </form>
  105.  
  106.       {mensajeExito && <h3>{mensajeExito}</h3>}
  107.     </div>
  108.   );
  109. }
Advertisement
Add Comment
Please, Sign In to add comment