Last active
March 24, 2021 14:40
-
-
Save spivurno/1dc988d26c0bb3621a01 to your computer and use it in GitHub Desktop.
Gravity Wiz // Gravity Forms // Disable Submit Button Until Required Fields are Field Out
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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-disable-submit-button-until-required-fields-are-filled-out.php | |
*/ | |
/** | |
* Gravity Wiz // Gravity Forms // Disable Submit Button Until Required Fields are Field Out | |
* | |
* Disable submit buttones until all required fields have been filled out. Currently only supports single-page forms. | |
* | |
* @version 1.0 | |
* @author David Smith <[email protected]> | |
* @license GPL-2.0+ | |
* @link http://gravitywiz.com/... | |
* @copyright 2013 Gravity Wiz | |
*/ | |
class GW_Disable_Submit { | |
public static $script_output = false; | |
public function __construct( $form_id ) { | |
add_action( "gform_pre_render_{$form_id}", array( $this, 'maybe_output_script' ) ); | |
add_action( "gform_register_init_scripts_{$form_id}", array( $this, 'add_init_script' ) ); | |
} | |
public function maybe_output_script( $form ) { | |
if( ! self::$script_output ) { | |
$this->script(); | |
self::$script_output = true; | |
} | |
return $form; | |
} | |
public function script() { | |
?> | |
<script type="text/javascript"> | |
var GWDisableSubmit; | |
(function($){ | |
GWDisableSubmit = function( args ) { | |
var self = this; | |
// copy all args to current object: formId, fieldId | |
for( prop in args ) { | |
if( args.hasOwnProperty( prop ) ) | |
self[prop] = args[prop]; | |
} | |
self.init = function() { | |
$( args.inputHtmlIds.join( ', ' ) ).change( function() { | |
self.runCheck(); | |
} ); | |
self.runCheck(); | |
} | |
self.runCheck = function() { | |
var submitButton = $( '#gform_submit_button_' + self.formId ); | |
if( self.areRequiredPopulated() ) { | |
submitButton.attr( 'disabled', false ).removeClass( 'gwds-disabled' ); | |
} else { | |
submitButton.attr( 'disabled', true ).addClass( 'gwds-disabled' ); | |
} | |
} | |
self.areRequiredPopulated = function() { | |
var inputs = $( args.inputHtmlIds.join( ', ' ) ), | |
inputCount = inputs.length, | |
fullCount = 0; | |
$( inputs ).each( function() { | |
var input = $( this ), | |
fieldId = input.attr( 'id' ).split( '_' )[2]; | |
// don't count fields hidden via conditional logic towards the inputCount | |
if( window['gf_check_field_rule'] && gf_check_field_rule( self.formId, fieldId, null, null ) == 'hide' ) { | |
inputCount -= 1; | |
return; | |
} | |
if( $.trim( $( this ).val() ) ) { | |
fullCount += 1; | |
} else { | |
return false; | |
} | |
} ); | |
return fullCount == inputCount; | |
} | |
self.init(); | |
} | |
})(jQuery); | |
</script> | |
<?php | |
} | |
public function add_init_script( $form ) { | |
$args = array( | |
'formId' => $form['id'], | |
'inputHtmlIds' => $this->get_required_input_html_ids( $form ) | |
); | |
$script = '; new GWDisableSubmit( ' . json_encode( $args ) . ' );'; | |
$slug = "gw_disable_submit_{$form['id']}"; | |
GFFormDisplay::add_init_script( $form['id'], $slug, GFFormDisplay::ON_PAGE_RENDER, $script ); | |
} | |
public function get_required_input_html_ids( $form ) { | |
$html_ids = ''; | |
foreach( $form['fields'] as &$field ) { | |
if( ! $field['isRequired'] ) | |
continue; | |
$input_ids = false; | |
switch( GFFormsModel::get_input_type( $field ) ) { | |
case 'address': | |
$input_ids = array( 1, 3, 4, 5, 6 ); | |
break; | |
case 'name': | |
$input_ids = array( 1, 2, 3, 4, 5, 6 ); | |
break; | |
default: | |
$html_ids[] = "#input_{$form['id']}_{$field['id']}"; | |
break; | |
} | |
if( ! $input_ids ) | |
continue; | |
foreach( $input_ids as $input_id ) { | |
$html_ids[] = "#input_{$form['id']}_{$field['id']}_{$input_id}"; | |
} | |
} | |
return $html_ids; | |
} | |
} | |
# Configuration | |
new GW_Disable_Submit( 534 ); |
@adcadesigns Hm, not immediately obvious why that variable is a string at the time that error is generated. Happy to dig in via support: https://gravitywiz.com/support/
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello @spivurno, I'm getting this error when I save it https://prnt.sc/10t0mp0