Now a days multi step form is more popular than regular form , as it is more user friendly rather than regular form. The multi step form is the best solution when there are too many fields in a from. So breaking large form into multiple step is more user friendly.
So in this tutorial we will learn , how we can create multi step form using jquery.
Step 1 : Add Html Code:
<!DOCTYPE html> <html lang="en"> <head> <title>Multistep Form In Jquery</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <style type="text/css"> #multistep_form fieldset:not(:first-of-type) { display: none; } </style> </head> <body> <h3 class="text-success" align="center">Multistep Form In Jquery</h3><br> <div class="container"> <div class="progress"> <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuemin="0" aria-valuemax="100"></div> </div> <div class="panel-group"> <div class="panel panel-primary"> <div class="panel-heading">Multistep Form In Jquery</div> <form class="form-horizontal" action="/action_page.php" id="multistep_form"> <fieldset id="account"> <div class="panel-body"><h4>Step 1: Create your account</h4><br> <div class="form-group"> <label class="control-label col-sm-2" for="email">Email:</label> <div class="col-sm-5"> <input type="email" class="form-control" id="email" name="email"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" for="pwd">Password:</label> <div class="col-sm-5"> <input type="password" class="form-control" id="pwd" name="pwd"> </div> </div> <input type="button" name="password" class="next btn btn-info" value="Next" id="next1" style='margin-left:30%'/> </div> </fieldset> <fieldset id="personal"> <div class="panel-body"><h4>Step 2: Personnel Details</h4><br> <div class="form-group"> <label class="control-label col-sm-2" for="fname">First Name:</label> <div class="col-sm-5"> <input type="text" class="form-control" id="fname" name="fname"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" for="lname">Last Name:</label> <div class="col-sm-5"> <input type="text" class="form-control" id="lname" name="lname"> </div> </div> <input type="button" name="previous" class="previous btn btn-warning" value="Previous" id="previous1" style='margin-left:30%'/> <input type="button" name="next" class="next btn btn-info" value="Next" id="next2" style='margin-left:30%'/> </div> </fieldset> <fieldset id="contact"> <div class="panel-body"><h4>Step 3: Contact Details</h4><br> <div class="form-group"> <label class="control-label col-sm-2" for="mobno">Mobile Number:</label> <div class="col-sm-5"> <input type="text" class="form-control" id="mobno" name="mobno"> </div> </div> <div class="form-group"> <label class="control-label col-sm-2" for="address">Address:</label> <div class="col-sm-5"> <textarea class="form-control" name="address" id="address"></textarea> </div> </div> <input type="button" name="previous" class="previous btn btn-warning" value="Previous" id="previous2" style='margin-left:30%'/> <input type="submit" name="submit" class="submit btn btn-success" value="Submit" id="next3" style='margin-left:30%'/> </div> </fieldset> </form> </div> </div> </div>
Step 2 : Add Jquery Code:
<script> $(document).ready(function(){ var form_count = 1, form_count_form, next_form, total_forms; total_forms = $("fieldset").length; $(".next").click(function(){ let previous = $(this).closest("fieldset").attr('id'); let next = $('#'+this.id).closest('fieldset').next('fieldset').attr('id'); $('#'+next).show(); $('#'+previous).hide(); setProgressBar(++form_count); }); $(".previous").click(function(){ let current = $(this).closest("fieldset").attr('id'); let previous = $('#'+this.id).closest('fieldset').prev('fieldset').attr('id'); $('#'+previous).show(); $('#'+current).hide(); setProgressBar(--form_count); }); setProgressBar(form_count); function setProgressBar(curStep){ var percent = parseFloat(100 / total_forms) * curStep; percent = percent.toFixed(); $(".progress-bar") .css("width",percent+"%") .html(percent+"%"); } }); </script> </body> </html>