| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- /*
- * Document : be_forms_wizard.js
- * Author : pixelcave
- * Description: Custom JS code used in Form Wizard Page
- */
- var BeFormWizard = function() {
- // Init Wizard defaults
- var initWizardDefaults = function(){
- jQuery.fn.bootstrapWizard.defaults.tabClass = 'nav nav-tabs';
- jQuery.fn.bootstrapWizard.defaults.nextSelector = '[data-wizard="next"]';
- jQuery.fn.bootstrapWizard.defaults.previousSelector = '[data-wizard="prev"]';
- jQuery.fn.bootstrapWizard.defaults.firstSelector = '[data-wizard="first"]';
- jQuery.fn.bootstrapWizard.defaults.lastSelector = '[data-wizard="lsat"]';
- jQuery.fn.bootstrapWizard.defaults.finishSelector = '[data-wizard="finish"]';
- jQuery.fn.bootstrapWizard.defaults.backSelector = '[data-wizard="back"]';
- };
- // Init simple wizard, for more examples you can check out https://github.com/VinceG/twitter-bootstrap-wizard
- var initWizardSimple = function(){
- jQuery('.js-wizard-simple').bootstrapWizard({
- onTabShow: function(tab, navigation, index) {
- var percent = ((index + 1) / navigation.find('li').length) * 100;
- // Get progress bar
- var progress = navigation.parents('.block').find('[data-wizard="progress"] > .progress-bar');
- // Update progress bar if there is one
- if (progress.length) {
- progress.css({ width: percent + 1 + '%' });
- }
- }
- });
- };
- // Init wizards with validation, for more examples you can check out https://github.com/VinceG/twitter-bootstrap-wizard
- // and https://github.com/jzaefferer/jquery-validation
- var initWizardValidation = function(){
- // Get forms
- var formClassic = jQuery('.js-wizard-validation-classic-form');
- var formMaterial = jQuery('.js-wizard-validation-material-form');
- // Prevent forms from submitting on enter key press
- formClassic.add(formMaterial).on('keyup keypress', function (e) {
- var code = e.keyCode || e.which;
- if (code === 13) {
- e.preventDefault();
- return false;
- }
- });
- // Init form validation on classic wizard form
- var validatorClassic = formClassic.validate({
- errorClass: 'invalid-feedback animated fadeInDown',
- errorElement: 'div',
- errorPlacement: function(error, e) {
- jQuery(e).parents('.form-group').append(error);
- },
- highlight: function(e) {
- jQuery(e).closest('.form-group').removeClass('is-invalid').addClass('is-invalid');
- },
- success: function(e) {
- jQuery(e).closest('.form-group').removeClass('is-invalid');
- jQuery(e).remove();
- },
- rules: {
- 'wizard-validation-classic-firstname': {
- required: true,
- minlength: 2
- },
- 'wizard-validation-classic-lastname': {
- required: true,
- minlength: 2
- },
- 'wizard-validation-classic-email': {
- required: true,
- email: true
- },
- 'wizard-validation-classic-bio': {
- required: true,
- minlength: 5
- },
- 'wizard-validation-classic-location': {
- required: true
- },
- 'wizard-validation-classic-skills': {
- required: true
- },
- 'wizard-validation-classic-terms': {
- required: true
- }
- },
- messages: {
- 'wizard-validation-classic-firstname': {
- required: 'Please enter a firstname',
- minlength: 'Your firtname must consist of at least 2 characters'
- },
- 'wizard-validation-classic-lastname': {
- required: 'Please enter a lastname',
- minlength: 'Your lastname must consist of at least 2 characters'
- },
- 'wizard-validation-classic-email': 'Please enter a valid email address',
- 'wizard-validation-classic-bio': 'Let us know a few thing about yourself',
- 'wizard-validation-classic-skills': 'Please select a skill!',
- 'wizard-validation-classic-terms': 'You must agree to the service terms!'
- }
- });
- // Init form validation on material wizard form
- var validatorMaterial = formMaterial.validate({
- errorClass: 'invalid-feedback animated fadeInDown',
- errorElement: 'div',
- errorPlacement: function(error, e) {
- jQuery(e).parents('.form-group').append(error);
- },
- highlight: function(e) {
- jQuery(e).closest('.form-group').removeClass('is-invalid').addClass('is-invalid');
- },
- success: function(e) {
- jQuery(e).closest('.form-group').removeClass('is-invalid');
- jQuery(e).remove();
- },
- rules: {
- 'wizard-validation-material-firstname': {
- required: true,
- minlength: 2
- },
- 'wizard-validation-material-lastname': {
- required: true,
- minlength: 2
- },
- 'wizard-validation-material-email': {
- required: true,
- email: true
- },
- 'wizard-validation-material-bio': {
- required: true,
- minlength: 5
- },
- 'wizard-validation-material-location': {
- required: true
- },
- 'wizard-validation-material-skills': {
- required: true
- },
- 'wizard-validation-material-terms': {
- required: true
- }
- },
- messages: {
- 'wizard-validation-material-firstname': {
- required: 'Please enter a firstname',
- minlength: 'Your firtname must consist of at least 2 characters'
- },
- 'wizard-validation-material-lastname': {
- required: 'Please enter a lastname',
- minlength: 'Your lastname must consist of at least 2 characters'
- },
- 'wizard-validation-material-email': 'Please enter a valid email address',
- 'wizard-validation-material-bio': 'Let us know a few thing about yourself',
- 'wizard-validation-material-skills': 'Please select a skill!',
- 'wizard-validation-material-terms': 'You must agree to the service terms!'
- }
- });
- // Init classic wizard with validation
- jQuery('.js-wizard-validation-classic').bootstrapWizard({
- tabClass: '',
- onTabShow: function(tab, navigation, index) {
- var percent = ((index + 1) / navigation.find('li').length) * 100;
- // Get progress bar
- var progress = navigation.parents('.block').find('[data-wizard="progress"] > .progress-bar');
- // Update progress bar if there is one
- if (progress.length) {
- progress.css({ width: percent + 1 + '%' });
- }
- },
- onNext: function(tab, navigation, index) {
- if( !formClassic.valid() ) {
- validatorClassic.focusInvalid();
- return false;
- }
- },
- onTabClick: function(tab, navigation, index) {
- jQuery('a', navigation).blur();
- return false;
- }
- });
- // Init wizard with validation
- jQuery('.js-wizard-validation-material').bootstrapWizard({
- tabClass: '',
- onTabShow: function(tab, navigation, index) {
- var percent = ((index + 1) / navigation.find('li').length) * 100;
- // Get progress bar
- var progress = navigation.parents('.block').find('[data-wizard="progress"] > .progress-bar');
- // Update progress bar if there is one
- if (progress.length) {
- progress.css({ width: percent + 1 + '%' });
- }
- },
- onNext: function(tab, navigation, index) {
- if( !formMaterial.valid() ) {
- validatorMaterial.focusInvalid();
- return false;
- }
- },
- onTabClick: function(tab, navigation, index) {
- jQuery('a', navigation).blur();
- return false;
- }
- });
- };
- return {
- init: function () {
- // Init Wizard Defaults
- initWizardDefaults();
- // Init Form Simple Wizard
- initWizardSimple();
- // Init Form Validation Wizard
- initWizardValidation();
- }
- };
- }();
- // Initialize when page loads
- jQuery(function(){ BeFormWizard.init(); });
|