【问题标题】:Using exponents in Gravity Forms calculations在重力形式计算中使用指数
【发布时间】:2015-08-23 06:33:32
【问题描述】:

首先,我并不精通 JavaScript 或 jQuery。话虽如此,我正在使用 Gravity Forms 创建一个包含指数的储蓄计算器。我找到了THIS 线程,但对它在计算指数值时的实际工作原理感到困惑。

这是我的设置:

我有 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}

公式继续并多次合并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>

...为了我的计算?我完全不确定如何在 4 个单独的字段中指定类似的内容......我知道这可能无法通过重力形式实现 - 或者肯定不简单 - 所以我非常感谢社区可能为我提供的任何帮助。

【问题讨论】:

  • 您说“计算对用户隐藏”。高级选项卡中的 Calc、MP 指数和 MP 分子是否设置为“仅限管理员”?如果是这样,您将无法使用 javascript 访问它们(如您的示例中所示),因此这对您不起作用。但是,您可以只使用用户可见的字段在 javascript 中进行所有计算。
  • 实际上,我的处理方式存在一些问题。您在 sn-p 下对 'functions.php' 文件一针见血。谢谢,伙计!
  • 很高兴我能帮上忙。 :)

标签: javascript jquery wordpress gravity-forms-plugin


【解决方案1】:

您在上面使用的 javascript sn-p 会改变用户看到的内容,但不会改变保存的表单数据。相反,您需要将 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 );

一个警告:这不会改变用户在填写表单时“看到”的任何内容。它只会在用户点击提交按钮后更改最终计算。

在这样的过滤器中进行所有计算而不是使用隐藏的表单数据也会更简洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多