form-wizard.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. var FormWizard = function () {
  2. return {
  3. init: function () {
  4. if (!jQuery().bootstrapWizard) {
  5. return;
  6. }
  7. /*-----------------------------------------------------------------------------------*/
  8. /* Show country list in Uniform style
  9. /*-----------------------------------------------------------------------------------*/
  10. $("#country_select").select2({
  11. placeholder: "Select your country"
  12. });
  13. var wizform = $('#wizForm');
  14. var alert_success = $('.alert-success', wizform);
  15. var alert_error = $('.alert-danger', wizform);
  16. /*-----------------------------------------------------------------------------------*/
  17. /* Validate the form elements
  18. /*-----------------------------------------------------------------------------------*/
  19. wizform.validate({
  20. doNotHideMessage: true,
  21. errorClass: 'error-span',
  22. errorElement: 'span',
  23. rules: {
  24. /* Create Account */
  25. email: {
  26. required: true,
  27. email: true
  28. },
  29. password: {
  30. minlength: 3,
  31. required: true
  32. },
  33. name: {
  34. required: true
  35. },
  36. gender: {
  37. required: true
  38. },
  39. location: {
  40. required: true
  41. },
  42. country: {
  43. required: true
  44. },
  45. phone: {
  46. required: true
  47. },
  48. /* Payment Details */
  49. card_number: {
  50. required: true,
  51. minlength: 16,
  52. maxlength: 16
  53. },
  54. card_cvc: {
  55. required: true,
  56. digits: true,
  57. minlength: 3,
  58. maxlength: 3
  59. },
  60. card_expirydate: {
  61. required: true
  62. },
  63. card_holder_name: {
  64. required: true
  65. }
  66. },
  67. invalidHandler: function (event, validator) {
  68. alert_success.hide();
  69. alert_error.show();
  70. },
  71. highlight: function (element) {
  72. $(element)
  73. .closest('.form-group').removeClass('has-success').addClass('has-error');
  74. },
  75. unhighlight: function (element) {
  76. $(element)
  77. .closest('.form-group').removeClass('has-error');
  78. },
  79. success: function (label) {
  80. if (label.attr("for") == "gender") {
  81. label.closest('.form-group').removeClass('has-error').addClass('has-success');
  82. label.remove();
  83. } else {
  84. label.addClass('valid')
  85. .closest('.form-group').removeClass('has-error').addClass('has-success');
  86. }
  87. }
  88. });
  89. /*-----------------------------------------------------------------------------------*/
  90. /* Initialize Bootstrap Wizard
  91. /*-----------------------------------------------------------------------------------*/
  92. $('#formWizard').bootstrapWizard({
  93. 'nextSelector': '.nextBtn',
  94. 'previousSelector': '.prevBtn',
  95. onNext: function (tab, navigation, index) {
  96. alert_success.hide();
  97. alert_error.hide();
  98. if (wizform.valid() == false) {
  99. return false;
  100. }
  101. var total = navigation.find('li').length;
  102. var current = index + 1;
  103. $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
  104. jQuery('li', $('#formWizard')).removeClass("done");
  105. var li_list = navigation.find('li');
  106. for (var i = 0; i < index; i++) {
  107. jQuery(li_list[i]).addClass("done");
  108. }
  109. if (current == 1) {
  110. $('#formWizard').find('.prevBtn').hide();
  111. } else {
  112. $('#formWizard').find('.prevBtn').show();
  113. }
  114. if (current >= total) {
  115. $('#formWizard').find('.nextBtn').hide();
  116. $('#formWizard').find('.submitBtn').show();
  117. } else {
  118. $('#formWizard').find('.nextBtn').show();
  119. $('#formWizard').find('.submitBtn').hide();
  120. }
  121. },
  122. onPrevious: function (tab, navigation, index) {
  123. alert_success.hide();
  124. alert_error.hide();
  125. var total = navigation.find('li').length;
  126. var current = index + 1;
  127. $('.stepHeader', $('#formWizard')).text('Step ' + (index + 1) + ' of ' + total);
  128. jQuery('li', $('#formWizard')).removeClass("done");
  129. var li_list = navigation.find('li');
  130. for (var i = 0; i < index; i++) {
  131. jQuery(li_list[i]).addClass("done");
  132. }
  133. if (current == 1) {
  134. $('#formWizard').find('.prevBtn').hide();
  135. } else {
  136. $('#formWizard').find('.prevBtn').show();
  137. }
  138. if (current >= total) {
  139. $('#formWizard').find('.nextBtn').hide();
  140. $('#formWizard').find('.submitBtn').show();
  141. } else {
  142. $('#formWizard').find('.nextBtn').show();
  143. $('#formWizard').find('.submitBtn').hide();
  144. }
  145. },
  146. onTabClick: function (tab, navigation, index) {
  147. bootbox.alert('On Tab click is disabled');
  148. return false;
  149. },
  150. onTabShow: function (tab, navigation, index) {
  151. var total = navigation.find('li').length;
  152. var current = index + 1;
  153. var $percent = (current / total) * 100;
  154. $('#formWizard').find('.progress-bar').css({
  155. width: $percent + '%'
  156. });
  157. }
  158. });
  159. $('#formWizard').find('.prevBtn').hide();
  160. $('#formWizard .submitBtn').click(function () {
  161. bootbox.alert("Form submitted successfully.");
  162. }).hide();
  163. }
  164. };
  165. }();