Cómo crear un formulario multi-step con JavaScript paso a paso

LinkedIn
Threads
Facebook
X
LinkedIn
Threads
Aprende paso a paso cómo crear un formulario multi-step con JavaScript moderno, responsivo y profesional. Ideal para mejorar la experiencia de usuario y aumentar conversiones.

Los formularios multi-step son una excelente opción cuando necesitas recolectar mucha información sin abrumar al usuario. Dividen el proceso en secciones claras y amigables. En esta guía, te enseño cómo hacer un formulario multi-step con JavaScript puro, sin librerías pesadas, 100% personalizable y estéticamente pro.

¿Por qué usar formularios Multi-Step?

  • Mejoran la experiencia del usuario.
  • Aumentan las conversiones.
  • Son ideales para formularios largos (registro, reservas, encuestas).
  • Se ven más modernos y limpios.

Tip: Siempre mantén tus formularios simples, visuales y con buena retroalimentación. Aquí puedes ver buenas prácticas de UX para formularios.

Paso a paso para crear tu formulario multi-step con JavaScript

1. Estructura HTML

Primero, define los pasos en contenedores separados, también, estaremos haciendo uso de una barra de progreso, para indicar al usuario el avance:

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Formulario Multi-Step</title>
</head>
<body>
  <div class="form-wrapper">
    <div class="progress-container">
      <div class="progress-bar" id="progressBar"></div>
    </div>

    <form id="multiStepForm">
      <div class="step active">
        <h2>Paso 1</h2>
        <input type="text" placeholder="Nombre" required />
        <button type="button" class="next">Siguiente</button>
      </div>

      <div class="step">
        <h2>Paso 2</h2>
        <input type="email" placeholder="Correo" required />
        <button type="button" class="prev">Anterior</button>
        <button type="button" class="next">Siguiente</button>
      </div>

      <div class="step">
        <h2>Paso 3</h2>
        <input type="password" placeholder="Contraseña" required />
        <button type="button" class="prev">Anterior</button>
        <button type="submit">Enviar</button>
      </div>
    </form>
  </div>
</body>
</html>

2. Estilos CSS modernos

Agrega estilos para ocultar/mostrar pasos y dar un look moderno:

CSS

.step {
  display: none;
  animation: fadeIn 0.5s ease-in-out;
}

body {
      font-family: 'Segoe UI', sans-serif;
      background: #f0f0f8;
      display: flex;
      justify-content: center;
      align-items: center;
      height: 100vh;
      padding: 20px;
    }

    .form-wrapper {
      width: 100%;
      max-width: 400px;
    }

    .progress-container {
      width: 100%;
      height: 8px;
      background: #e0e0e0;
      border-radius: 8px;
      overflow: hidden;
      margin-bottom: 20px;
    }

    .progress-bar {
      height: 100%;
      width: 0%;
      background: linear-gradient(90deg, #7e5bef, #ff80bf);
      transition: width 0.4s ease;
    }

    form {
      background: white;
      padding: 30px;
      border-radius: 16px;
      box-shadow: 0 8px 16px rgba(0,0,0,0.1);
    }

    .step {
      display: none;
      animation: fadeIn 0.5s ease-in-out;
    }

    .step.active {
      display: block;
    }

    input {
      width: 90%;
      padding: 12px;
      margin: 10px 0;
      border: 2px solid #ddd;
      border-radius: 8px;
      font-size: 16px;
    }

    button {
      padding: 10px 20px;
      border: none;
      border-radius: 8px;
      background: #7e5bef;
      color: white;
      font-weight: bold;
      margin: 10px 5px 0 0;
      cursor: pointer;
      transition: background 0.3s;
    }

    button:hover {
      background: #6749d4;
    }

    @keyframes fadeIn {
      from { opacity: 0; transform: translateY(20px); }
      to { opacity: 1; transform: translateY(0); }
    }
  

3. Lógica JavaScript

Controlamos qué paso mostrar:

JavaScript

const steps = document.querySelectorAll(".step");
    const progressBar = document.getElementById("progressBar");
    let currentStep = 0;

    function showStep(index) {
      steps.forEach((step, i) => {
        step.classList.toggle("active", i === index);
      });
      updateProgressBar(index);
    }

    function updateProgressBar(index) {
      const progress = ((index + 1) / steps.length) * 100;
      progressBar.style.width = progress + "%";
    }

    document.querySelectorAll(".next").forEach(button => {
      button.addEventListener("click", () => {
        if (currentStep < steps.length - 1) {
          currentStep++;
          showStep(currentStep);
        }
      });
    });

    document.querySelectorAll(".prev").forEach(button => {
      button.addEventListener("click", () => {
        if (currentStep > 0) {
          currentStep--;
          showStep(currentStep);
        }
      });
    });

    document.getElementById("multiStepForm").addEventListener("submit", e => {
      e.preventDefault();
      alert("¡Formulario enviado con éxito!");
    });

  

Resultado

¿Quieres ver el código completo y jugar con él?

Este es solo el comienzo. Si quieres clonar el proyecto, trastear el código, mejorarlo o usarlo en tu propio sitio, ¡te invito a visitar el repositorio en GitHub! Ahí encontrarás el código actualizado y futuras mejoras.

👉 Explora el repositorio y dale ⭐ si te sirvió
(También acepto PRs, sugerencias y memes de gatitos 🐱)

Conclusión

Crear un formulario multi-step con JavaScript es más fácil de lo que parece y puede hacer una gran diferencia en la experiencia de usuario. Es ideal para apps modernas, procesos de onboarding y cualquier proyecto que necesite fluidez. Puedes mejorar este ejemplo con validaciones por paso, animaciones, barra de progreso o incluso conectar con APIs como Formspree o Netlify Forms.

Si tienes alguna duda o proyecto en mente que quisieras compartir no dudes en contactarme ¡Estaré encantada y feliz de poder ayudarte!

¿Quieres aprender más y llevar tus conocimientos al siguiente nivel?🎓

Si te emocionó este artículo y quieres comenzar YA a aprender más sobre JavaScript te invito a que explores todos los cursos disponibles en Platzi, una de las mejores plataformas de educación online en español. Hay rutas completas para desarrollo móvil, backend, frontend, ¡Y hasta diseño, inglés y marca personal!

👉 Haz clic aquí para entrar con mi link de referido y empieza tu camino pro como developer ¡Obtendrás 1 mes gratis adicional! 🎁 Además, cuando te unes desde ese link también me estarías ayudando a mi también a seguir adquiriendo conocimientos 💖 ¡Gracias mil por eso!

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Últimas Publicacioneds

Scroll to Top