DescriptionUsageJavaScript VersionParametersExamplePlacementSource CodePHP VersionParametersExamplePlacementSource Code
Description
This filter can be used to modify the value returned by a field merge tag before it is used by a number field calculation or calculated product field.
Usage
The gform_merge_tag_value_pre_calculation filter has both a JavaScript version and a PHP version. Both versions should be used.
The JavaScript version only overrides the merge tag value on the front-end.
12345gform.addFilter( 'gform_merge_tag_value_pre_calculation', function( value, mergeTagArr, isVisible, formulaField, formId ) { // do stuff return result;} );
The PHP version overrides the merge tag value when the calculation is rerun during submission using the field values saved in the entry.
12345add_filter( 'gform_merge_tag_value_pre_calculation', function( $value, $input_id, $modifier, $field, $form, $entry ) { // do stuff return $result;}, 10, 5 );
JavaScript Version
Parameters
value float
The field value after the merge tag was processed.
mergeTagArr array
The merge tag being processed.
mergeTagArr[0] contains the full merge tag e.g. {Field label:ID:modifier}
mergeTagArr[1] contains the field or input ID e.g. 2
mergeTagArr[3] contains the modifier(s) including the colon e.g. :value
mergeTagArr[4] contains the modifier(s) without the colon e.g. value
isVisible boolean
Is the field referenced in the merge tag visible or hidden by conditional logic?
formulaField Javascript Object
The current calculation field object. e.g.
1{"field_id":3,"formula":"{:1}+{:2}","rounding":""}
formId integer
The ID of the form in use.
Example
This example shows how you can enable the :value modifier for use with choice based pricing fields.
1234567891011121314151617181920212223242526gform.addFilter('gform_merge_tag_value_pre_calculation', function (value, mergeTagArr, isVisible, formulaField, formId) { var inputId = mergeTagArr[1], fieldId = parseInt(inputId), modifier = mergeTagArr[4], field = jQuery('#field_' + formId + '_' + fieldId); if (modifier == 'value' && field.hasClass('gfield_price') && isVisible) { var input = field.find('input[name="input_' + inputId + '"], select[name="input_' + inputId + '"]'); // filter out unselected radio or checkbox inputs if (input.length > 1 || input.prop('type') == 'checkbox') { input = input.filter(':checked'); } if (input.length > 0) { var val = input.val().split('|'); if (val.length > 1) { value = val[0]; } } } return value;});
Placement
Your code snippet can be placed in a HTML field on your form or in a theme custom JavaScript file.
Source Code
This filter is located in js/gravityforms.js
PHP Version
Parameters
$value float
The field value after the merge tag was processed.
$input_id string
The field or input ID from the merge tag.
$modifier string
The modifier from the merge tag e.g. value.
$field Field Object
The calculation field currently being processed.
$form Form Object
The form currently being processed.
$entry Entry Object
The entry currently being processed.
Example
This example shows how you can enable the :value modifier for use with choice based pricing fields.
12345678910add_filter( 'gform_merge_tag_value_pre_calculation', function ( $value, $input_id, $modifier, $field, $form, $entry ) { if ( $modifier == 'value' ) { $value = GFCommon::to_number( GFCommon::replace_variables( "{:{$input_id}:value}", $form, $entry ) ); if ( ! $value || ! is_numeric( $value ) ) { $value = 0; } } return $value;}, 10, 6 );
Placement
Your code snippet should be placed in the functions.php file of your active theme.
Source Code
This filter is located in GFCommon::calculate() in common.php