You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
193 lines
6.1 KiB
193 lines
6.1 KiB
/* ------------------------------------------------------------------------------ |
|
* |
|
* # Form wizard |
|
* |
|
* Specific JS code additions for wizard_form.html page |
|
* |
|
* Version: 1.1 |
|
* Latest update: Dec 25, 2015 |
|
* |
|
* ---------------------------------------------------------------------------- */ |
|
|
|
$(function() { |
|
|
|
|
|
// Wizard examples |
|
// ------------------------------ |
|
|
|
// Basic setup |
|
$(".form-basic").formwizard({ |
|
disableUIStyles: true, |
|
disableInputFields: false, |
|
inDuration: 150, |
|
outDuration: 150 |
|
}); |
|
|
|
|
|
// Cancel the post |
|
$(".form-post-cancel").formwizard({ |
|
disableUIStyles: true, |
|
disableInputFields: false, |
|
formPluginEnabled: true, |
|
inDuration: 150, |
|
outDuration: 150, |
|
formOptions: { |
|
success: function(data){ |
|
swal({title: "Congratulations!", text: "You are registered now!", type: "success", timer: 2000, confirmButtonColor: "#43ABDB"}) |
|
}, |
|
dataType: 'json', |
|
resetForm: true, |
|
beforeSubmit: function(){ |
|
return confirm("This is the beforeSubmit callback, do you want to submit?"); |
|
}, |
|
beforeSend: function(){ |
|
return confirm("This is the beforeSend callback, do you want to submit?"); |
|
}, |
|
beforeSerialize: function(){ |
|
return confirm("This is the beforeSerialize callback, do you want to submit?"); |
|
} |
|
} |
|
}); |
|
|
|
|
|
// With validation |
|
$(".form-validation").formwizard({ |
|
disableUIStyles: true, |
|
validationEnabled: true, |
|
inDuration: 150, |
|
outDuration: 150, |
|
validationOptions: { |
|
ignore: 'input[type=hidden], .select2-search__field', // ignore hidden fields |
|
errorClass: 'validation-error-label', |
|
successClass: 'validation-valid-label', |
|
highlight: function(element, errorClass) { |
|
$(element).removeClass(errorClass); |
|
}, |
|
unhighlight: function(element, errorClass) { |
|
$(element).removeClass(errorClass); |
|
}, |
|
|
|
// Different components require proper error label placement |
|
errorPlacement: function(error, element) { |
|
|
|
// Styled checkboxes, radios, bootstrap switch |
|
if (element.parents('div').hasClass("checker") || element.parents('div').hasClass("choice") || element.parent().hasClass('bootstrap-switch-container') ) { |
|
if(element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) { |
|
error.appendTo( element.parent().parent().parent().parent() ); |
|
} |
|
else { |
|
error.appendTo( element.parent().parent().parent().parent().parent() ); |
|
} |
|
} |
|
|
|
// Unstyled checkboxes, radios |
|
else if (element.parents('div').hasClass('checkbox') || element.parents('div').hasClass('radio')) { |
|
error.appendTo( element.parent().parent().parent() ); |
|
} |
|
|
|
// Input with icons and Select2 |
|
else if (element.parents('div').hasClass('has-feedback') || element.hasClass('select2-hidden-accessible')) { |
|
error.appendTo( element.parent() ); |
|
} |
|
|
|
// Inline checkboxes, radios |
|
else if (element.parents('label').hasClass('checkbox-inline') || element.parents('label').hasClass('radio-inline')) { |
|
error.appendTo( element.parent().parent() ); |
|
} |
|
|
|
// Input group, styled file input |
|
else if (element.parent().hasClass('uploader') || element.parents().hasClass('input-group')) { |
|
error.appendTo( element.parent().parent() ); |
|
} |
|
|
|
else { |
|
error.insertAfter(element); |
|
} |
|
}, |
|
rules: { |
|
email: { |
|
email: true |
|
} |
|
} |
|
} |
|
}); |
|
|
|
// Update single file input state |
|
$(".form-validation").on("step_shown", function(event, data) { |
|
$.uniform.update(); |
|
}); |
|
|
|
|
|
// AJAX form submit |
|
$(".form-ajax").formwizard({ |
|
disableUIStyles: true, |
|
formPluginEnabled: true, |
|
disableInputFields: false, |
|
inDuration: 150, |
|
outDuration: 150, |
|
formOptions :{ |
|
success: function(data){ |
|
swal({title: "Congratulations!", text: "You are registered now!", type: "success", timer: 2000, confirmButtonColor: "#43ABDB"}) |
|
}, |
|
beforeSubmit: function(data){ |
|
$("#ajax-data").css({borderTop: '1px solid #ddd', padding: 15}).html("<span class='text-semibold'>Data sent to the server:</span> " + $.param(data)); |
|
}, |
|
dataType: 'json', |
|
resetForm: true |
|
} |
|
}); |
|
|
|
|
|
// |
|
// Add steps dynamically |
|
// |
|
|
|
// Initialize wizard |
|
$(".form-add-steps").formwizard({ |
|
disableUIStyles: true, |
|
disableInputFields: false, |
|
inDuration: 150, |
|
outDuration: 150 |
|
}); |
|
|
|
|
|
// Append step on button click |
|
$("#add-step").on('click', function(){ |
|
$(".step-wrapper").append($(".extra-steps .step:first")); |
|
$(".form-add-steps").formwizard("update_steps"); |
|
return false; |
|
}); |
|
|
|
|
|
|
|
// Initialize plugins |
|
// ------------------------------ |
|
|
|
// Select2 selects |
|
$('.select').select2(); |
|
|
|
|
|
// Simple select without search |
|
$('.select-simple').select2({ |
|
minimumResultsForSearch: Infinity |
|
}); |
|
|
|
|
|
// Styled checkboxes and radios |
|
$('.styled').uniform({ |
|
radioClass: 'choice' |
|
}); |
|
|
|
|
|
// Styled file input |
|
$('.file-styled').uniform({ |
|
fileButtonClass: 'action btn bg-blue' |
|
}); |
|
|
|
|
|
// Uncomment if you use styled checkboxes/radios to update them dynamically when step changed |
|
$(".form-basic, .form-validation, .form-add-steps, .form-ajax").on("step_shown", function(event, data){ |
|
//$.uniform.update(); |
|
}); |
|
|
|
});
|
|
|