Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save spivurno/53e94532ce38efbd49c05fb16122436b to your computer and use it in GitHub Desktop.
Save spivurno/53e94532ce38efbd49c05fb16122436b to your computer and use it in GitHub Desktop.
Gravity Wiz // Gravity Forms // Prevent Duplicate Submissions from Double Clicks
<?php
/**
* WARNING! THIS SNIPPET MAY BE OUTDATED.
* The latest version of this snippet can be found in the Gravity Wiz Snippet Library:
* https://github.com/gravitywiz/snippet-library/blob/master/gravity-forms/gw-prevent-duplicate-submissions.php
*/
/**
* Gravity Wiz // Gravity Forms // Prevent Duplicate Submissions from Double Clicks
* http://gravitywiz.com/
*/
add_filter( 'gform_pre_render', 'gw_disable_submit' );
function gw_disable_submit( $form ) {
if( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
return $form;
}
?>
<script type="text/javascript">
jQuery( document ).ready( function( $ ) {
var formId = '<?php echo $form['id']; ?>';
$( '#gform_submit_button_' + formId ).on( 'click', function( event ) {
if( hasPendingFileUploads( formId ) ) {
return;
}
var $submitCopy = $( this ).clone();
$submitCopy
.attr( 'id', '' )
.prop( 'disabled', true )
.attr( 'value', 'Processing...' )
.insertBefore( $( this ) );
$( this ).css( { visibility: 'hidden', position: 'absolute', transition: 'all 0s ease 0s' } );
} );
function hasPendingFileUploads() {
if( ! window[ 'gfMultiFileUploader' ] ) {
return false;
}
var pendingUploads = false;
$.each( gfMultiFileUploader.uploaders, function( i, uploader ) {
if( uploader.total.queued > 0 ) {
pendingUploads = true;
return false;
}
} );
return pendingUploads;
}
} );
</script>
<?php
return $form;
}
@matgray87
Copy link

matgray87 commented Jan 17, 2018

Hi,
This is very useful for a form that loads a second page when the submit button is clicked, however, if it is an AJAX form, this snipped only works the first time, but not any subsequent submissions... what would you have to change to allow this to work every time the form is submitted using AJAX (assuming there were errors with the first form submissions).
Thanks,
Matt

@roliquinho
Copy link

Thank you so much for this! I loaded it on some of my websites using the Code Snippets Plugin.

@spivurno
Copy link
Author

Glad to help, @sperez91!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment