30h*_*ays 7 javascript wordpress jquery gravity-forms-plugin
首先,我绝不精通JavaScript或jQuery.话虽这么说,我正在使用Gravity Forms创建一个包含指数的储蓄计算器.我发现了这个线程,但是在计算指数值时它实际上是如何工作的.
这是我的设置:
我有3个用户定义的字段:
实际的计算对用户是隐藏的.这里有两个公式一次计算.第一个是"用户计算",用于查找"总利息".第二个是固定利率为1.95%的"固定计算",而不是用户定义的字段,朝着相同的目标努力.除固定费率外,两个公式都是相同的,其结果被纳入不含指数的最终公式中.值得庆幸的.以下是用户输入后的前三个"数字"字段(名称和公式):
'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}
Run Code Online (Sandbox Code Playgroud)
该公式继续并MP exponent多次合并该字段.鉴于我的情况,我甚至可以使用前面提到的脚本(未经编辑的源文章):
<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>
Run Code Online (Sandbox Code Playgroud)
...为了我的计算?我完全不确定如何在4个不同的领域中指定这样的东西...我理解这可能不适用于Gravity Forms - 或者当然不简单 - 所以我非常感谢社区可能给我提供的任何帮助.
小智 1
您上面使用的 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 );
Run Code Online (Sandbox Code Playgroud)
一个警告:这不会改变用户在填写表单时“看到”的任何内容。它只会在用户点击提交按钮后更改最终计算。
在这样的过滤器中进行所有计算也比使用隐藏的表单数据更干净。
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |