Formulario dividido en html css y javascript

Registro:

Name:

Contact Info:

Birthday:

Login Info:





Por veces tenemos la necesidad de dividir nuestro formulario de registro o de otra cosa en varias partes

Ya sea porque tengamos muchos registros que guardar, o porque los campos de cada registro son muy longos y eso nos lleva a dividir el formulario

Este formulario es el ideal para eses casos, por ejemplo, pondremos los datos del usuario, cliente, amigo, lo que sea al inicio, y los demás datos en otra parte de formulario como es la morada de entrega, la morada de vacaciones etc.

Se puede diseñar a vuestro gusto.

Las partes que lo componen son el HTML, el css, y el JavaScript

No hace falta saber programación ya que vos lo dejo ya preparado solo es copiar el código.

Si vos interesa saber programación recuerdo que tengo los cursos de HTML, CSS, y JavaScript en este blog


...

El HTML

Para realizar este formulario, necessitamos logicamente del formulario en HTML

Codigo HTML

 <form id="regForm" action="/action_page.php">
 <h1>Registro:</h1>
 <!-- One "tab" for each step in the form: -->
 <div class="tab">Name:
     <p><input placeholder="First name..." oninput="this.className = ''" name="fname"></p>
     <p><input placeholder="Last name..." oninput="this.className = ''" name="lname"></p>
 </div>
 <div class="tab">Contact Info:
     <p><input placeholder="E-mail..." oninput="this.className = ''" name="email"></p>
     <p><input placeholder="Phone..." oninput="this.className = ''" name="phone"></p>
 </div>
 <div class="tab">Birthday:
     <p><input placeholder="dd" oninput="this.className = ''" name="dd"></p>
     <p><input placeholder="mm" oninput="this.className = ''" name="nn"></p>
     <p><input placeholder="yyyy" oninput="this.className = ''" name="yyyy"></p>
 </div>
 <div class="tab">Login Info:
     <p><input placeholder="Username..." oninput="this.className = ''" name="uname"></p>
     <p><input placeholder="Password..." oninput="this.className = ''" name="pword" type="password"></p>
 </div>
 <div style="overflow:auto;">
     <div style="float:right;">
         <button type="button" id="prevBtn" onclick="nextPrev(-1)">Previous</button>
         <button type="button" id="nextBtn" onclick="nextPrev(1)">Next</button>
     </div>
 </div>
 <!-- Circles which indicates the steps of the form: -->
 <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>    
    

El codigo CSS se puede cambiar, para que el formulario quede a tu gusto

Codigo CSS

        * {
            box-sizing: border-box;
        }
    
        body {
            background-color: #f1f1f1;
        }
    
        #regForm {
            background-color: #ffffff;
            margin: 100px auto;
            font-family: Raleway;
            padding: 40px;
            width: 70%;
            min-width: 300px;
        }
    
        h1 {
            text-align: center;
        }
    
        input {
            padding: 10px;
            width: 100%;
            font-size: 17px;
            font-family: Raleway;
            border: 1px solid #aaaaaa;
        }
    
        /* Mark input boxes that gets an error on validation: */
        input.invalid {
            background-color: #ffdddd;
        }
    
        /* Hide all steps by default: */
        .tab {
            display: none;
        }
    
        button {
            background-color: #04AA6D;
            color: #ffffff;
            border: none;
            padding: 10px 20px;
            font-size: 17px;
            font-family: Raleway;
            cursor: pointer;
        }
    
        button:hover {
            opacity: 0.8;
        }
    
        #prevBtn {
            background-color: #bbbbbb;
        }
    
        /* Make circles that indicate the steps of the form: */
        .step {
            height: 15px;
            width: 15px;
            margin: 0 2px;
            background-color: #bbbbbb;
            border: none;
            border-radius: 50%;
            display: inline-block;
            opacity: 0.5;
        }
    
        .step.active {
            opacity: 1;
        }
    
        /* Mark the steps that are finished and valid: */
        .step.finish {
            background-color: #04AA6D;
        } 
    

No hay que olvidar que el codigo CSS tiene que estar en la cabecera, o en una hoja externa, y ser llamado desde la cabecera. Si lo ponemos en la cabecera directamente tiene que estar entre las etiquetas <style>




Por ultimo el codigo Javascript, para que la interacion entre formularios se haga

Codigo CSS

 var currentTab = 0; // Current tab is set to be the first tab (0)
 showTab(currentTab); // Display the current tab
 function showTab(n) {
     // This function will display the specified tab of the form...
     var x = document.getElementsByClassName("tab");
     x[n].style.display = "block";
     //... and fix the Previous/Next buttons:
     if (n == 0) {
         document.getElementById("prevBtn").style.display = "none";
     } else {
         document.getElementById("prevBtn").style.display = "inline";
     }
     if (n == (x.length - 1)) {
         document.getElementById("nextBtn").innerHTML = "Submit";
     } else {
         document.getElementById("nextBtn").innerHTML = "Next";
     }
     //... and run a function that will display the correct step indicator:
     fixStepIndicator(n)
 }
 function nextPrev(n) {
     // This function will figure out which tab to display
     var x = document.getElementsByClassName("tab");
     // Exit the function if any field in the current tab is invalid:
     if (n == 1 && !validateForm()) return false;
     // Hide the current tab:
     x[currentTab].style.display = "none";
     // Increase or decrease the current tab by 1:
     currentTab = currentTab + n;
     // if you have reached the end of the form...
            if (currentTab >= x.length) {
                // ... the form gets submitted:
                document.getElementById("regForm").submit();
                return false;
            }
            // Otherwise, display the correct tab:
            showTab(currentTab);
        }
    
        function validateForm() {
            // This function deals with validation of the form fields
            var x, y, i, valid = true;
            x = document.getElementsByClassName("tab");
            y = x[currentTab].getElementsByTagName("input");
            // A loop that checks every input field in the current tab:
            for (i = 0; i < y.length; i++) {
                // If a field is empty...
                if (y[i].value == "") {
                    // add an "invalid" class to the field:
                    y[i].className += " invalid";
                    // and set the current valid status to false
                    valid = false;
                }
            }
            // If the valid status is true, mark the step as finished and valid:
            if (valid) {
                document.getElementsByClassName("step")[currentTab].className += " finish";
            }
            return valid; // return the valid status
        }
    
        function fixStepIndicator(n) {
            // This function removes the "active" class of all steps...
            var i, x = document.getElementsByClassName("step");
            for (i = 0; i < x.length; i++) {
                x[i].className = x[i].className.replace(" active", "");
            }
            //... and adds the "active" class on the current step:
            x[n].className += " active";
        }    
    








Publicar un comentario

0 Comentarios