Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
index.html
Tab = 4 espacios
1
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Validación de Formularios Bootstrap 5</title>
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light p-4">

  <div class="container" style="max-width: 620px;">
    <div class="card shadow-sm border-0 rounded-4 p-4 bg-white">
      <h4 class="fw-bold text-dark mb-3">Validación de Datos en Kilopolis</h4>

      <form id="formValidacion" class="needs-validation" novalidate>
        <!-- Nombre de Usuario -->
        <div class="mb-3">
          <label for="campoUsuario" class="form-label fw-semibold">Nombre de Usuario</label>
          <div class="input-group has-validation">
            <span class="input-group-text">@</span>
            <input type="text" class="form-control" id="campoUsuario" name="campoUsuario" placeholder="usuario_kilopolis" required>
            <div class="invalid-feedback">
              Por favor ingresa un nombre de usuario válido.
            </div>
            <div class="valid-feedback">
              ¡Excelente nombre de usuario!
            </div>
          </div>
        </div>

        <!-- Ciudad / País -->
        <div class="mb-3">
          <label for="campoCiudad" class="form-label fw-semibold">Ciudad de Residencia</label>
          <input type="text" class="form-control" id="campoCiudad" name="campoCiudad" placeholder="Ej. Bogotá, Madrid, Ciudad de México" required>
          <div class="invalid-feedback">
            Debes proporcionar tu ciudad para asignar la zona horaria.
          </div>
        </div>

        <!-- Casilla de Aceptación -->
        <div class="mb-4">
          <div class="form-check">
            <input class="form-check-input" type="checkbox" value="" id="checkAcepto" name="checkAcepto" required>
            <label class="form-check-label small" for="checkAcepto">
              Acepto los términos de certificación de Kilopolis Academia
            </label>
            <div class="invalid-feedback">
              Debes aceptar los términos antes de continuar.
            </div>
          </div>
        </div>

        <button class="btn btn-primary w-100 py-2 rounded-pill fw-semibold shadow-sm" type="submit">
          Validar y Enviar Formulario &raquo;
        </button>
      </form>
    </div>
  </div>

  <script>
    const form = document.getElementById('formValidacion');
    form.addEventListener('submit', function (event) {
      if (!form.checkValidity()) {
        event.preventDefault();
        event.stopPropagation();
      } else {
        event.preventDefault();
        alert('🎉 ¡Formulario 100% válido y listo para enviar!');
      }
      form.classList.add('was-validated');
    }, false);
  </script>

</body>
</html>
Haz clic para editar este código
Vista Previa
Bootstrap 5.3 + Popper