Wie man erstellt: Mehrstufiges Formular

Lernen Sie, wie man ein mehrstufiges Formular erstellt.

Formular-Assistent - Mehrstufiges Formular:

Registrieren:
Name:

Kontaktinformationen:

Geburtstag:

Anmeldeinformationen:

亲自试一试

Schritt 1 - HTML hinzufügen:

<form id="regForm" action="">
<h1>Registrieren:</h1>
<!-- Jedes Schritt des Formulars hat eine "Registerkarte": -->
<div class="tab">Name:</div>
  <p><input placeholder="Vorname..."></p>
  <p><input placeholder="Nachname..."></p>
</div>
<div class="tab">Kontaktinformation:</div>
  <p><input placeholder="E-Mail..."></p>
  <p><input placeholder="Telefon..."></p>
</div>
<div class="tab">Geburtstag:</div>
  <p><input placeholder="dd"></p>
  <p><input placeholder="mm"></p>
  <p><input placeholder="yyyy" oninput="this.className = ''"></p>
</div>
<div class="tab">Login-Informationen:</div>
  <p><input placeholder="Benutzername..." oninput="this.className = ''"></p>
  <p><input placeholder="Passwort..." oninput="this.className = ''"></p>
</div>
<div style="overflow:auto;">
  <div style="float:right;">
    <button type="button" id="prevBtn" onclick="nextPrev(-1)">Vorherige</button>
    <button type="button" id="nextBtn" onclick="nextPrev(1)">Nächste</button>
  </div>
</div>
/* Kreis zur Anzeige der Formularschritte: */
<div style="text-align:center;margin-top:40px;">
  <span class="step"></span>
  <span class="step"></span>
  <span class="step"></span>
  <span class="step"></span>
</div>
</form>

Schritt 2 - Fügen Sie CSS hinzu:

Stellen Sie die Stile der Formularelemente ein:

/* Legen Sie Stile für das Formular fest: */
#regForm {
  background-color: #ffffff;
  margin: 100px auto;
  padding: 40px;
  width: 70%;
  min-width: 300px;

/* Legen Sie Stile für Eingabefelder fest: */
input {
  padding: 10px;
  width: 100%;
  font-size: 17px;
  font-family: Raleway;
  border: 1px solid #aaaaaa;

/* Markieren Sie Eingabefelder, die bei der Validierung fehlschlagen: */
input.invalid {
  background-color: #ffdddd;

/* Verstecken Sie alle Schritte standardmäßig: */
.tab {
  display: none;

/* Erstellen Sie einen Kreis zur Anzeige der Schritte des Formulars: */
.step {
  height: 15px;
  width: 15px;
  margin: 0 2px;
  background-color: #bbbbbb;
  border: none;
  border-radius: 50%;
  display: inline-block;
  opacity: 0.5;

/* Marke den aktuellen Schritt: */
.step.active {
  opacity: 1;

/* Marke abgeschlossene und gültige Schritte: */
.step.finish {
  background-color: #04AA6D;

Dritter Schritt - Füge JavaScript hinzu:

var currentTab = 0; // Setze die aktuelle Registerkarte auf die erste Registerkarte (0)
showTab(currentTab); // Zeige die aktuelle Registerkarte
function showTab(n) {
  // Diese Funktion zeigt die angegebene Registerkarte des Formulars an ...
  var x = document.getElementsByClassName("tab");
  x[n].style.display = "block";
  // ... und repariere die Vorher/Nachher-Schaltflächen:
  if (n == 0) {
    document.getElementById("prevBtn").style.display = "none";
  }
    document.getElementById("prevBtn").style.display = "inline";
  
  if (n == (x.length - 1)) {
    document.getElementById("nextBtn").innerHTML = "Submit";
  }
    document.getElementById("nextBtn").innerHTML = "Next";
  
  // ... und führe eine Funktion aus, um den richtigen Schrittindikator anzuzeigen: 
  fixStepIndicator(n)

function nextPrev(n) {
  // Diese Funktion bestimmt, welche Registerkarte angezeigt werden soll:
  var x = document.getElementsByClassName("tab");
  // Wenn irgendeines der Felder im aktuellen Register ungültig ist, verlasse diese Funktion:
  if (n == 1 && !validateForm()) return false;
  // Verstecke das aktuelle Register:
  x[currentTab].style.display = "none";
  // Erhöht oder verringert die aktuelle Registerkarte um 1:
  currentTab = currentTab + n;
  // Wenn Sie am Ende des Tables angelangt sind...:
  if (currentTab >= x.length) {
    //... Das Formular wird eingereicht:
    document.getElementById("regForm").submit();
    return false;
  
  // Ansonsten, zeigt die richtige Registerkarte an:
  showTab(currentTab);

function validateForm() {
  // Diese Funktion behandelt die Validierung der Formularfelder
  var x, y, i, valid = true;
  x = document.getElementsByClassName("tab");
  y = x[currentTab].getElementsByTagName("input");
  // Durchläufe die Schleife über jedes Eingabefeld im aktuellen Tab:
  for (i = 0; i < y.length; i++) {
    // Wenn das Feld leer ist...
    if (y[i].value == "") {
      // Fügt die "invalid"-Klasse zu diesem Feld hinzu:
      y[i].className += " invalid";
      // Setzt den aktuellen gültigen Status auf false:
      valid = false;
    
  
  // Wenn der gültige Status true ist, markiert diesen Schritt als abgeschlossen und gültig:
  if (valid) {
    document.getElementsByClassName("step")[currentTab].className += " finish";
  
  return valid; // gibt den gültigen Status zurück

function fixStepIndicator(n) {
  // Diese Funktion entfernt die "active"-Klasse von allen Schritten...
  var i, x = document.getElementsByClassName("step");
  for (i = 0; i < x.length; i++) {
    x[i].className = x[i].className.replace(" active", "");
  
  //... Fügt die "active"-Klasse dem aktuellen Schritt hinzu:
  x[n].className += " aktiv ";

亲自试一试