Wie man erstellt: Mehrstufiges Formular
Lernen Sie, wie man ein mehrstufiges Formular erstellt.
Formular-Assistent - Mehrstufiges Formular:
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 ";