Skip to content

Instantly share code, notes, and snippets.

@iamchetanp
Created September 26, 2018 21:43
Show Gist options
  • Save iamchetanp/fde8df8016fb85ae0627ee5a0a614423 to your computer and use it in GitHub Desktop.
Save iamchetanp/fde8df8016fb85ae0627ee5a0a614423 to your computer and use it in GitHub Desktop.
Disable scrollTop for multipage caldera form.
jQuery(document).on('click', '.form-page', function(e){
var clicked = jQuery(this),
page_box = clicked.closest('.caldera-form-page'),
form = clicked.closest('form.caldera_forms_form'),
form_id = form.attr( 'id' ),
instance = form.data('instance'),
current_page = form.find('.caldera-form-page:visible').data('formpage'),
page = page_box.data('formpage') ? page_box.data('formpage') : clicked.data('page') ,
breadcrumb = jQuery('.breadcrumb[data-form="caldera_form_' + instance + '"]'),
next,
prev,
fields,
run = true,
focusPage = current_page;
if( !form.length ){
return;
}
cf_validate_form( form ).destroy();
fields = form.find('[data-field]');
form.find('.has-error').removeClass('has-error');
if( clicked.hasClass("next-page") && page >= current_page ){
fields = jQuery('#caldera_form_' + instance + ' [data-formpage="' + current_page + '"] [data-field]' );
var $this_field,
valid;
for (var f = 0; f < fields.length; f++) {
$this_field = jQuery(fields[f]);
if( $this_field.hasClass( 'cf-multi-uploader' ) || $this_field.hasClass( 'cf-multi-uploader-list') ){
continue;
}
valid = $this_field.parsley().isValid();
if (true === valid) {
continue;
}
e.preventDefault();
run = false;
}
if( true === run && page > current_page ){
for( var i = page - 1; i >= 1; i -- ){
fields = jQuery('#caldera_form_' + instance + ' [data-formpage="' + i + '"] [data-field]' );
for (var f = 0; f < fields.length; f++) {
$this_field = jQuery(fields[f]);
$this_field.parsley().validate();
valid = $this_field.parsley().isValid({force: true});
if (true === valid) {
continue;
}
e.preventDefault();
run = false;
if( i > focusPage ){
focusPage = i;
}
}
}
}
}
if( false === run ){
if( focusPage !== current_page ){
jQuery( '#form_page_' + instance + '_pg_' + current_page ).hide().attr( 'aria-hidden', 'true' ).css( 'visibility', 'hidden' );
jQuery( '#form_page_' + instance + '_pg_' + focusPage ).show().attr( 'aria-hidden', 'false' ).css( 'visibility', 'visible' );
}
cf_validate_form( form ).validate();
return false;
}
if( clicked.hasClass("next-page") ){
if(breadcrumb){
breadcrumb.find('li.active').removeClass('active').children().attr('aria-expanded', 'false');
}
next = form.find('.caldera-form-page[data-formpage="'+ ( page + 1 ) +'"]');
if(next.length){
page_box.hide().attr( 'aria-hidden', 'true' ).css( 'visibility', 'hidden' );
next.show().attr( 'aria-hidden', 'false' ).css( 'visibility', 'visible' );
if(breadcrumb){
breadcrumb.find('a[data-page="'+ ( page + 1 ) +'"]').attr('aria-expanded', 'true').parent().addClass('active');
}
}
}else if( clicked.hasClass("prev-page") ){
if(breadcrumb){
breadcrumb.find('li.active').removeClass('active').children().attr('aria-expanded', 'false');
}
prev = form.find('.caldera-form-page[data-formpage="'+ ( page - 1 ) +'"]');
if(prev.length){
page_box.hide().attr( 'aria-hidden', 'true' ).css( 'visibility', 'hidden' );
prev.show().attr( 'aria-hidden', 'false' ).css( 'visibility', 'visible' );
if(breadcrumb){
breadcrumb.find('a[data-page="'+ ( page - 1 ) +'"]').attr('aria-expanded', 'true').parent().addClass('active');
}
}
}else{
if(clicked.data('pagenav')){
e.preventDefault();
clicked.closest('.breadcrumb').find('li.active').removeClass('active').children().attr('aria-expanded', 'false');
jQuery('#' + clicked.data('pagenav') + ' .caldera-form-page').hide().attr( 'aria-hidden', 'true' ).css( 'visibility', 'hidden' );
jQuery('#' + clicked.data('pagenav') + ' .caldera-form-page[data-formpage="'+ ( clicked.data('page') ) +'"]').show().attr( 'aria-hidden', 'false' ).css( 'visibility', 'visible' );
clicked.parent().addClass('active').children().attr('aria-expanded', 'true');
}
}
jQuery(document).trigger('cf.pagenav');
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment