Multi-Step Form with International Phone Input and Nice Select
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Bootstrap Multi Step Form with Progress Bar Example </title> <!-- Normalize CSS --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"> <!-- Bootstrap 4 CSS --> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/css/bootstrap.css'> <!-- Telephone Input CSS --> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/12.1.2/css/intlTelInput.css'> <!-- Icons CSS --> <link rel='stylesheet' href='https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css'> <!-- Nice Select CSS --> <link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/jquery-nice-select/1.1.0/css/nice-select.min.css'> </head> <body> <main> <!-- Start Multiform HTML --> <section class="multi_step_form"> <form id="msform"> <!-- Tittle --> <div class="tittle"> <h2>Verification Process</h2> <p>In order to use this service, you have to complete this verification process</p> </div> <!-- progressbar --> <ul id="progressbar"> <li class="active">Verify Phone</li> <li>Upload Documents</li> <li>Security Questions</li> </ul> <!-- fieldsets --> <fieldset> <h3>Setup your phone</h3> <h6>We will send you a SMS. Input the code to verify.</h6> <div class="form-row"> <div class="form-group col-md-6"> <input type="tel" id="phone" class="form-control" placeholder="+91"> </div> <div class="form-group col-md-6"> <input type="text" class="form-control" placeholder="Enter Number"> </div> </div> <div class="done_text"> <a href="#" class="don_icon"><i class="ion-android-done"></i></a> <h6>A secret code is sent to your phone. <br>Please enter it here.</h6> </div> <div class="code_group"> <input type="text" class="form-control" placeholder="0"> <input type="text" class="form-control" placeholder="0"> <input type="text" class="form-control" placeholder="0"> <input type="text" class="form-control" placeholder="0"> </div> <button type="button" class="action-button previous_button">Back</button> <button type="button" class="next action-button">Continue</button> </fieldset> <fieldset> <h3>Verify Your Identity</h3> <h6>Please upload any of these documents to verify your Identity.</h6> <div class="passport"> <h4>Govt. ID card <br>PassPort <br>Driving License.</h4> <a href="#" class="don_icon"><i class="ion-android-done"></i></a> </div> <div class="input-group"> <div class="custom-file"> <input type="file" class="custom-file-input" id="upload"> <label class="custom-file-label" for="upload"><i class="ion-android-cloud-outline"></i>Choose file</label> </div> </div> <ul class="file_added"> <li>File Added:</li> <li><a href="#"><i class="ion-paperclip"></i>national_id_card.png</a></li> <li><a href="#"><i class="ion-paperclip"></i>national_id_card_back.png</a></li> </ul> <button type="button" class="action-button previous previous_button">Back</button> <button type="button" class="next action-button">Continue</button> </fieldset> <fieldset> <h3>Create Security Questions</h3> <h6>Please update your account with security questions</h6> <div class="form-group"> <select class="product_select"> <option data-display="1. Choose A Question">1. Choose A Question</option> <option>2. Choose A Question</option> <option>3. Choose A Question</option> </select> </div> <div class="form-group fg_2"> <input type="text" class="form-control" placeholder="Anwser here:"> </div> <div class="form-group"> <select class="product_select"> <option data-display="1. Choose A Question">1. Choose A Question</option> <option>2. Choose A Question</option> <option>3. Choose A Question</option> </select> </div> <div class="form-group fg_3"> <input type="text" class="form-control" placeholder="Anwser here:"> </div> <button type="button" class="action-button previous previous_button">Back</button> <a href="#" class="action-button">Finish</a> </fieldset> </form> </section> <!-- END Multiform HTML --> </article> </main> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta/js/bootstrap.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/12.1.2/js/intlTelInput.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js'></script> <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery-nice-select/1.1.0/js/jquery.nice-select.min.js'></script> </body> </html>
/*font Variables*/ /*Color Variables*/ @import url("https://fonts.googleapis.com/css?family=Roboto:300i,400,400i,500,700,900"); .multi_step_form { background: #f6f9fb; display: block; overflow-x: hidden; } .multi_step_form #msform { text-align: center; position: relative; padding-top: 50px; min-height: 820px; height: auto; max-width: 820px; margin: 0 auto; background: #ffffff; z-index: 1; } .multi_step_form #msform .tittle { text-align: center; padding-bottom: 55px; } .multi_step_form #msform .tittle h2 { font: 500 24px/35px "Roboto", sans-serif; color: #3f4553; padding-bottom: 5px; } .multi_step_form #msform .tittle p { font: 400 16px/28px "Roboto", sans-serif; color: #5f6771; } .multi_step_form #msform fieldset { border: 0; padding: 20px 105px 0; position: relative; width: 100%; left: 0; right: 0; } .multi_step_form #msform fieldset:not(:first-of-type) { display: none; } .multi_step_form #msform fieldset h3 { font: 500 18px/35px "Roboto", sans-serif; color: #3f4553; } .multi_step_form #msform fieldset h6 { font: 400 15px/28px "Roboto", sans-serif; color: #5f6771; padding-bottom: 30px; } .multi_step_form #msform fieldset .intl-tel-input { display: block; background: transparent; border: 0; box-shadow: none; outline: none; } .multi_step_form #msform fieldset .intl-tel-input .flag-container .selected-flag { padding: 0 20px; background: transparent; border: 0; box-shadow: none; outline: none; width: 65px; } .multi_step_form #msform fieldset .intl-tel-input .flag-container .selected-flag .iti-arrow { border: 0; } .multi_step_form #msform fieldset .intl-tel-input .flag-container .selected-flag .iti-arrow:after { content: "\f35f"; position: absolute; top: 0; right: 0; font: normal normal normal 24px/7px Ionicons; color: #5f6771; } .multi_step_form #msform fieldset #phone { padding-left: 80px; } .multi_step_form #msform fieldset .form-group { padding: 0 10px; } .multi_step_form #msform fieldset .fg_2, .multi_step_form #msform fieldset .fg_3 { padding-top: 10px; display: block; overflow: hidden; } .multi_step_form #msform fieldset .fg_3 { padding-bottom: 70px; } .multi_step_form #msform fieldset .form-control, .multi_step_form #msform fieldset .product_select { border-radius: 3px; border: 1px solid #d8e1e7; padding: 0 20px; height: auto; font: 400 15px/48px "Roboto", sans-serif; color: #5f6771; box-shadow: none; outline: none; width: 100%; } .multi_step_form #msform fieldset .form-control.placeholder, .multi_step_form #msform fieldset .product_select.placeholder { color: #5f6771; } .multi_step_form #msform fieldset .form-control:-moz-placeholder, .multi_step_form #msform fieldset .product_select:-moz-placeholder { color: #5f6771; } .multi_step_form #msform fieldset .form-control::-moz-placeholder, .multi_step_form #msform fieldset .product_select::-moz-placeholder { color: #5f6771; } .multi_step_form #msform fieldset .form-control::-webkit-input-placeholder, .multi_step_form #msform fieldset .product_select::-webkit-input-placeholder { color: #5f6771; } .multi_step_form #msform fieldset .form-control:hover, .multi_step_form #msform fieldset .form-control:focus, .multi_step_form #msform fieldset .product_select:hover, .multi_step_form #msform fieldset .product_select:focus { border-color: #5271ff; } .multi_step_form #msform fieldset .form-control:focus.placeholder, .multi_step_form #msform fieldset .product_select:focus.placeholder { color: transparent; } .multi_step_form #msform fieldset .form-control:focus:-moz-placeholder, .multi_step_form #msform fieldset .product_select:focus:-moz-placeholder { color: transparent; } .multi_step_form #msform fieldset .form-control:focus::-moz-placeholder, .multi_step_form #msform fieldset .product_select:focus::-moz-placeholder { color: transparent; } .multi_step_form #msform fieldset .form-control:focus::-webkit-input-placeholder, .multi_step_form #msform fieldset .product_select:focus::-webkit-input-placeholder { color: transparent; } .multi_step_form #msform fieldset .product_select:after { display: none; } .multi_step_form #msform fieldset .product_select:before { content: "\f35f"; position: absolute; top: 0; right: 20px; font: normal normal normal 24px/48px Ionicons; color: #5f6771; } .multi_step_form #msform fieldset .product_select .list { width: 100%; } .multi_step_form #msform fieldset .done_text { padding-top: 40px; } .multi_step_form #msform fieldset .done_text .don_icon { height: 36px; width: 36px; line-height: 36px; font-size: 22px; margin-bottom: 10px; background: #5271ff; display: inline-block; border-radius: 50%; color: #ffffff; text-align: center; } .multi_step_form #msform fieldset .done_text h6 { line-height: 23px; } .multi_step_form #msform fieldset .code_group { margin-bottom: 60px; } .multi_step_form #msform fieldset .code_group .form-control { border: 0; border-bottom: 1px solid #a1a7ac; border-radius: 0; display: inline-block; width: 30px; font-size: 30px; color: #5f6771; padding: 0; margin-right: 7px; text-align: center; line-height: 1; } .multi_step_form #msform fieldset .passport { margin-top: -10px; padding-bottom: 30px; position: relative; } .multi_step_form #msform fieldset .passport .don_icon { height: 36px; width: 36px; line-height: 36px; font-size: 22px; position: absolute; top: 4px; right: 0; background: #5271ff; display: inline-block; border-radius: 50%; color: #ffffff; text-align: center; } .multi_step_form #msform fieldset .passport h4 { font: 500 15px/23px "Roboto", sans-serif; color: #5f6771; padding: 0; } .multi_step_form #msform fieldset .input-group { padding-bottom: 40px; } .multi_step_form #msform fieldset .input-group .custom-file { width: 100%; height: auto; } .multi_step_form #msform fieldset .input-group .custom-file .custom-file-label { width: 168px; border-radius: 5px; cursor: pointer; font: 700 14px/40px "Roboto", sans-serif; border: 1px solid #99a2a8; text-align: center; transition: all 300ms linear 0s; color: #5f6771; } .multi_step_form #msform fieldset .input-group .custom-file .custom-file-label i { font-size: 20px; padding-right: 10px; } .multi_step_form #msform fieldset .input-group .custom-file .custom-file-label:hover, .multi_step_form #msform fieldset .input-group .custom-file .custom-file-label:focus { background: #5271ff; border-color: #5271ff; color: #fff; } .multi_step_form #msform fieldset .input-group .custom-file input { display: none; } .multi_step_form #msform fieldset .file_added { text-align: left; padding-left: 190px; padding-bottom: 60px; } .multi_step_form #msform fieldset .file_added li { font: 400 15px/28px "Roboto", sans-serif; color: #5f6771; } .multi_step_form #msform fieldset .file_added li a { color: #5271ff; font-weight: 500; display: inline-block; position: relative; padding-left: 15px; } .multi_step_form #msform fieldset .file_added li a i { font-size: 22px; padding-right: 8px; position: absolute; left: 0; transform: rotate(20deg); } .multi_step_form #msform #progressbar { margin-bottom: 30px; overflow: hidden; } .multi_step_form #msform #progressbar li { list-style-type: none; color: #99a2a8; font-size: 9px; width: calc(100%/3); float: left; position: relative; font: 500 13px/1 "Roboto", sans-serif; } .multi_step_form #msform #progressbar li:nth-child(2):before { content: "\f12f"; } .multi_step_form #msform #progressbar li:nth-child(3):before { content: "\f457"; } .multi_step_form #msform #progressbar li:before { content: "\f1fa"; font: normal normal normal 30px/50px Ionicons; width: 50px; height: 50px; line-height: 50px; display: block; background: #eaf0f4; border-radius: 50%; margin: 0 auto 10px auto; } .multi_step_form #msform #progressbar li:after { content: ''; width: 100%; height: 10px; background: #eaf0f4; position: absolute; left: -50%; top: 21px; z-index: -1; } .multi_step_form #msform #progressbar li:last-child:after { width: 150%; } .multi_step_form #msform #progressbar li.active { color: #5271ff; } .multi_step_form #msform #progressbar li.active:before, .multi_step_form #msform #progressbar li.active:after { background: #5271ff; color: white; } .multi_step_form #msform .action-button { background: #5271ff; color: white; border: 0 none; border-radius: 5px; cursor: pointer; min-width: 130px; font: 700 14px/40px "Roboto", sans-serif; border: 1px solid #5271ff; margin: 0 5px; text-transform: uppercase; display: inline-block; } .multi_step_form #msform .action-button:hover, .multi_step_form #msform .action-button:focus { background: #405867; border-color: #405867; } .multi_step_form #msform .previous_button { background: transparent; color: #99a2a8; border-color: #99a2a8; } .multi_step_form #msform .previous_button:hover, .multi_step_form #msform .previous_button:focus { background: #405867; border-color: #405867; color: #fff; }
(function ($) { "use strict"; //* Form js function verificationForm() { //jQuery time var current_fs, next_fs, previous_fs; //fieldsets var left, opacity, scale; //fieldset properties which we will animate var animating; //flag to prevent quick multi-click glitches $(".next").click(function () { if (animating) return false; animating = true; current_fs = $(this).parent(); next_fs = $(this).parent().next(); //activate next step on progressbar using the index of next_fs $("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active"); //show the next fieldset next_fs.show(); //hide the current fieldset with style current_fs.animate({ opacity: 0 }, { step: function (now, mx) { //as the opacity of current_fs reduces to 0 - stored in "now" //1. scale current_fs down to 80% scale = 1 - (1 - now) * 0.2; //2. bring next_fs from the right(50%) left = (now * 50) + "%"; //3. increase opacity of next_fs to 1 as it moves in opacity = 1 - now; current_fs.css({ 'transform': 'scale(' + scale + ')', 'position': 'absolute' }); next_fs.css({ 'left': left, 'opacity': opacity }); }, duration: 800, complete: function () { current_fs.hide(); animating = false; }, //this comes from the custom easing plugin easing: 'easeInOutBack' }); }); $(".previous").click(function () { if (animating) return false; animating = true; current_fs = $(this).parent(); previous_fs = $(this).parent().prev(); //de-activate current step on progressbar $("#progressbar li").eq($("fieldset").index(current_fs)).removeClass("active"); //show the previous fieldset previous_fs.show(); //hide the current fieldset with style current_fs.animate({ opacity: 0 }, { step: function (now, mx) { //as the opacity of current_fs reduces to 0 - stored in "now" //1. scale previous_fs from 80% to 100% scale = 0.8 + (1 - now) * 0.2; //2. take current_fs to the right(50%) - from 0% left = ((1 - now) * 50) + "%"; //3. increase opacity of previous_fs to 1 as it moves in opacity = 1 - now; current_fs.css({ 'left': left }); previous_fs.css({ 'transform': 'scale(' + scale + ')', 'opacity': opacity }); }, duration: 800, complete: function () { current_fs.hide(); animating = false; }, //this comes from the custom easing plugin easing: 'easeInOutBack' }); }); $(".submit").click(function () { return false; }) }; //* Add Phone no select function phoneNoselect() { if ($('#msform').length) { $("#phone").intlTelInput(); $("#phone").intlTelInput("setNumber", "+91"); }; }; //* Select js function nice_Select() { if ($('.product_select').length) { $('select').niceSelect(); }; }; /*Function Calls*/ verificationForm(); phoneNoselect(); nice_Select(); })(jQuery);
This snippet showcases a multi-step form with a clean and modern design, featuring an international phone input field and a customizable select dropdown. This form is ideal for complex registration or onboarding processes, breaking down the steps into manageable chunks to improve user experience.
Key Features:
- Step-by-Step Progress: The form is divided into multiple steps, visually represented by a progress bar or indicators, to guide users through the process.
- International Phone Input: The phone number input field allows users to easily select their country code and enter their phone number.
- Customizable Select Dropdown: The select dropdown offers a flexible and customizable way to display and select options, enhancing the user experience.
- Validation: The form can include built-in validation to ensure that users provide accurate and complete information.
- Responsive Design: The form adapts to different screen sizes, providing a consistent user experience across devices.
Implementation:
- HTML Structure: Create the HTML structure for the form, including the steps, input fields, buttons, and progress indicators.
- CSS Styling: Apply CSS styles to create the desired layout, colors, and typography. Use a CSS framework like Bootstrap or Tailwind CSS for faster development.
- JavaScript Functionality: Implement JavaScript to handle form validation, step progression, and interaction with the international phone input and select dropdown components. Consider using libraries like jQuery or a front-end framework like React or Vue for more complex interactions.
By following these steps, you can create a user-friendly and efficient multi-step form that guides users through the registration or onboarding process.
Stylish Contact Form with Image in Tailwind CSS
Responsive Registration Form with Image in Tailwind CSS
Bootstrap 5 Payment Method Form Page with Invoice
Modern Pricing Table Design with Bootstrap 4
Responsive Multi-Level Drop-Down Navigation Menu in CSS
Interactive Bottom Navigation Bar Indicator with CSS
Real-time Password Strength Indicator in Bootstrap 5
Responsive Video Card Component for Tailwind CSS
Responsive Feature Highlight Component with Tailwind CSS
Responsive Review Cards Component with CSS3
Responsive CSS3 Timeline Design With Hover Effects
Building Blocks for Your Web Pages
Explore a collection of pre-written HTML,CSS and Javascript
snippets to jumpstart your web development projects.