在重力形式计算中使用指数
Using exponents in Gravity Forms calculations
首先,我对JavaScript或jQuery一窍不通。也就是说,我正在使用 Gravity Forms 创建一个包含指数的储蓄计算器。我找到了 THIS 个线程,但对它在计算指数值时的实际工作方式感到困惑。
这是我的设置:
我有 3 个用户定义的字段:
- 本金金额
- 利率
- 每月付款次数
实际计算对用户是隐藏的。这里有两个公式同时计算。首先是 'User calculations' 努力寻找 'Total Interest'。第二个是'Fixed calculations'固定利率1.95%,而不是用户定义的领域,朝着同样的目标努力。除了固定利率之外,这两个公式是相同的,其结果被合并到一个没有指数的最终公式中。谢天谢地。这是用户输入后的前三个 'Number' 字段(名称和公式):
'CALC'<br>
( {Interest rate::2} / 12 ) / 100
'MP exponent'
( 1 + {CALC:8} ) <---This is the formula that requires an exponent equal to the user-defined "Number of monthly payments" field.
'MP numerator'
{CALC:8} * {Principal amount::1} * {MP exponent:10}
公式继续并多次合并 MP exponent
字段。考虑到我这里的情况,我什至可以使用上述脚本(未经其来源 post 编辑):
<script>
gform.addFilter( 'gform_calculation_result', function(result, formulaField, formId, calcObj ){
if ( formulaField.field_id == "2" ) {
var field_five = jQuery('#input_2_5').val();
result = field_five * 12;
}
return result;
});
</script>
...我的计算?我完全不确定如何在 4 个单独的字段中指定这样的内容......我知道这可能无法通过 Gravity Forms - 或者肯定不简单 - 所以我非常感谢社区可能为我提供的任何帮助。
您在上面使用的 javascript 代码片段会改变用户看到的内容,但不会改变保存的表单数据。您需要将 PHP 过滤器添加到主题的 functions.php 文件中。
add_filter( 'gform_calculation_result', function ( $result, $formula, $field, $form, $entry ) {
if ( $form['id'] == 1 && $field['id'] == 10 ) {
$base = 1 + (float) rgar( $entry, '8' ); // '8' should be field ID of Calc
$exponent = (float) rgar( $entry, '1' ); // '1' should be field ID of Number of monthly payments
$result = pow( $base, $exponent );
}
return $result;
}, 10, 5 );
一个警告:这不会改变用户"sees"填写表格时的任何内容。它只会在用户点击提交按钮后更改最终计算。
在这样的过滤器中进行所有计算也比使用隐藏的表单数据更清晰。
首先,我对JavaScript或jQuery一窍不通。也就是说,我正在使用 Gravity Forms 创建一个包含指数的储蓄计算器。我找到了 THIS 个线程,但对它在计算指数值时的实际工作方式感到困惑。
这是我的设置:
我有 3 个用户定义的字段:
- 本金金额
- 利率
- 每月付款次数
实际计算对用户是隐藏的。这里有两个公式同时计算。首先是 'User calculations' 努力寻找 'Total Interest'。第二个是'Fixed calculations'固定利率1.95%,而不是用户定义的领域,朝着同样的目标努力。除了固定利率之外,这两个公式是相同的,其结果被合并到一个没有指数的最终公式中。谢天谢地。这是用户输入后的前三个 'Number' 字段(名称和公式):
'CALC'<br>
( {Interest rate::2} / 12 ) / 100
'MP exponent'
( 1 + {CALC:8} ) <---This is the formula that requires an exponent equal to the user-defined "Number of monthly payments" field.
'MP numerator'
{CALC:8} * {Principal amount::1} * {MP exponent:10}
公式继续并多次合并 MP exponent
字段。考虑到我这里的情况,我什至可以使用上述脚本(未经其来源 post 编辑):
<script>
gform.addFilter( 'gform_calculation_result', function(result, formulaField, formId, calcObj ){
if ( formulaField.field_id == "2" ) {
var field_five = jQuery('#input_2_5').val();
result = field_five * 12;
}
return result;
});
</script>
...我的计算?我完全不确定如何在 4 个单独的字段中指定这样的内容......我知道这可能无法通过 Gravity Forms - 或者肯定不简单 - 所以我非常感谢社区可能为我提供的任何帮助。
您在上面使用的 javascript 代码片段会改变用户看到的内容,但不会改变保存的表单数据。您需要将 PHP 过滤器添加到主题的 functions.php 文件中。
add_filter( 'gform_calculation_result', function ( $result, $formula, $field, $form, $entry ) {
if ( $form['id'] == 1 && $field['id'] == 10 ) {
$base = 1 + (float) rgar( $entry, '8' ); // '8' should be field ID of Calc
$exponent = (float) rgar( $entry, '1' ); // '1' should be field ID of Number of monthly payments
$result = pow( $base, $exponent );
}
return $result;
}, 10, 5 );
一个警告:这不会改变用户"sees"填写表格时的任何内容。它只会在用户点击提交按钮后更改最终计算。
在这样的过滤器中进行所有计算也比使用隐藏的表单数据更清晰。