如何创建:多步骤表单
- Edellinen sivu Vaihda salasanan näkyvyys
- Seuraava sivu Automaattinen täyttö
学习如何创建一个多步骤的表单。
表单向导 - 多步骤表单:
第一步 - 添加 HTML:
<form id="regForm" action=""> <h1>Register:</h1> <!-- 表单中的每个步骤都有一个“标签页”: --> <div class="tab">Name:</div> <p><input placeholder="First name..." oninput="this.className = ''"></p> <p><input placeholder="Last name..." oninput="this.className = ''"></p> </div> <div class="tab">Contact Info:</div> <p><input placeholder="E-mail..." oninput="this.className = ''"></p> <p><input placeholder="Phone..." oninput="this.className = ''"></p> </div> <div class="tab">Birthday:</div> <p><input placeholder="dd" oninput="this.className = ''"></p> <p><input placeholder="mm" oninput="this.className = ''"></p> <p><input placeholder="yyyy" oninput="tämä.className = ''"></p> </div> <div class="vaihe">Kirjautumistiedot:</div> <p><input placeholder="Käyttäjätunnus..." oninput="tämä.className = ''"></p> <p><input placeholder="Salasana..." oninput="tämä.className = ''"></p> </div> <div tyylillä="ylitys: automaattinen;"> <div tyylillä="liikkuvuus: oikea;" <nappi tyypillä="nappi" id="edellinenNappi" onclick="edellinenSeuraava(-1)">Edellinen</nappi> <nappi tyypillä="nappi" id="seuraavaNappi" onclick="edellinenSeuraava(1)">Seuraava</nappi> </div> </div> /* Käytetään viittaukseen lomakkeen vaiheiden pyörteisiin: */ <div tyylillä="tekstin tasaus: keskitetty; marginaali-ylös: 40px;"> <span class="vaihe"></span> <span class="vaihe"></span> <span class="vaihe"></span> <span class="vaihe"></span> </div> </form>
Vaihe 2 - Lisää CSS:
Aseta lomakkeen elementtien tyylit:
/* Aseta lomakkeen tyylit: */ #rekForm { taustaväri: #ffffff; marginaali: 100px auto; tunnistelun leveys: 40px; leveys: 70%; min-leveys: 300px; } /* Aseta syöttökentien tyylit: */ input { tunnistelun leveys: 10px; leveys: 100%; fontti-koko: 17px; font-perhe: Raleway; reuna: 1px kiinteä #aaaaaa; } /* Merkitse tarkistuksen aikana virheellisiksi jääneet syöttökentät: */ input.epävirheellinen { taustaväri: #ffdddd; } /* Oletusarvoisesti piilota kaikki vaiheet: */ .vaihe { näkyvyys: ei näy; } /* Luo viittaus lomakkeen vaiheiden pyörteisiin: */ .askel { korkeus: 15px; width: 15px; margin: 0 2px; background-color: #bbbbbb; border: none; border-radius: 50%; display: inline-block; opacity: 0.5; } /* Merkitse nykyinen vaihe: */ .step.active { opacity: 1; } /* Merkitse suoritetut ja vahvistetut vaiheet: */ .step.finish { background-color: #04AA6D; }
Vaihe 3 - Lisää JavaScript:
var currentTab = 0; // Nykyinen välilehti asetetaan ensimmäiseen välilehteen (0) showTab(currentTab); // Näytä nykyinen välilehti function showTab(n) { // Tämä funktio näyttää lomakkeen määritetyn välilehden ... var x = document.getElementsByClassName("tab"); x[n].style.display = "block"; // ... ja korjaa edellinen/Seuraava-painikkeet: if (n == 0) { document.getElementById("prevBtn").style.display = "none"; } document.getElementById("prevBtn").style.display = "inline"; } if (n == (x.length - 1)) { document.getElementById("nextBtn").innerHTML = "Lähetä"; } document.getElementById("nextBtn").innerHTML = "Seuraava"; } // ... ja suorita funktio, joka näyttää oikean askeleen indikaattorin: fixStepIndicator(n) } function nextPrev(n) { // Tämä funktio määrittää, mikä välilehti näytetään: var x = document.getElementsByClassName("tab"); // Jos nykyisen välilehden kentistä on epävirallinen, lopeta funktio: if (n == 1 && !validateForm()) return false; // Piilota nykyinen välilehti: x[currentTab].style.display = "none"; // Lisää tai vähennä nykyinen välilehti 1:llä: currentTab = currentTab + n; // Jos olet saavuttanut lomakkeen lopun... if (currentTab >= x.length) { //... Lomake lähetetään: document.getElementById("regForm").submit(); return false; } // Muuten näytä oikea välilehti: showTab(currentTab); } function validateForm() { // Tämä funktio käsittelee lomakkeen kenttien vahvistamisen var x, y, i, valid = true; x = document.getElementsByClassName("tab"); y = x[currentTab].getElementsByTagName("input"); // Tarkista nykyisen välilehden jokaisen syöttökentän silmukka: for (i = 0; i < y.length; i++) { // Jos kenttä on tyhjä... if (y[i].value == "") { // Lisää "invalid"-luokka tähän kenttään: y[i].className += " invalid"; // Aseta nykyinen kelvollisuustila arvoon false: valid = false; } } // Jos kelvollisuustila on true, merkkaa tämä vaihe valmiiksi ja kelvolliseksi: if (valid) { document.getElementsByClassName("step")[currentTab].className += " finish"; } return valid; // palauta kelvollisuustila } function fixStepIndicator(n) { // Tämä funktio poistaa kaikista vaiheista "active"-luokan... var i, x = document.getElementsByClassName("step"); for (i = 0; i < x.length; i++) { x[i].className = x[i].className.replace(" active", ""); } //... Lisää "active"-luokka nykyiseen vaiheeseen: x[n].className += " active"; }
- Edellinen sivu Vaihda salasanan näkyvyys
- Seuraava sivu Automaattinen täyttö