重力根据所选值的数量形成条件逻辑

Posted

技术标签:

【中文标题】重力根据所选值的数量形成条件逻辑【英文标题】:Gravity forms conditional logic based on number of values selected 【发布时间】:2021-11-15 01:52:12 【问题描述】:

我有一个用重力形式构建的表单,它提出 5 个问题,每个问题有 2 个答案。

每个答案对应一个类别,因此我希望能够添加一些条件逻辑,以便确认发送到不同的页面,具体取决于哪个类别有更多答案。

表格在这里:https://90daysfromretirement.com/medicare-advantage-vs-medicare-supplement/

这两个类别是“优势”和“补充” - 因此取决于答案,因此无论哪个类别有更多响应(3 个或更多),然后确认会将它们重定向到相应的页面。

问题是我不知道如何计算每个值并运行逻辑。我认为我发现的任何重力形式附加组件都不可能,而且我无法将代码放在一起来做到这一点。

有什么建议吗?

【问题讨论】:

如何为您的字段分配类别? 现在它设置了单选按钮,我已经将每个响应的值设置为它对应的类别。所以或示例问题1:“不重要”值=补充“非常重要”值=优势最初我想有一种方法可以按值对它们进行计数,然后将该总数添加到隐藏字段或我可以隐藏的数字字段,然后根据该字段运行条件逻辑。但我不知道如何计算它并填充该字段,我发现并调整了一些 sn-ps 还没有工作。 【参考方案1】:

由于您只有两个选项,因此您实际上只需要知道一个的计数和问题的总数即可知道哪个值被选中了更多。

例如,如果您有 10 个问题,并且选择了 6 次“Advantage”选项,则您知道 Advantage 的内容不止“Supplement”。

这是一个可以帮助您入门的 sn-p。它需要一组单选按钮字段,计算指定值被选中的次数,并将该计数填充到数字字段中。

然后您可以使用该 Number 字段在您的确认中应用条件逻辑以重定向到适当的页面(例如,如果 Count 大于 5,则重定向到 Advantage 页面。如果 Count 小于 6,则重定向到 Supplement 页面)。

/**
 * Gravity Wiz // Gravity Forms // Value Counter
 * https://gravitywiz.com/
 * 
 * Count the number of times a given value has been selected in a group of fields and populate that number into a Number field.
 * This snippet is designed to target a Number field and count selected values in Checkbox and Radio Button fields.
 * 
 * This snippet works best with our free [GF Custom javascript](https://gravitywiz.com/gravity-forms-custom-javascript/) plugin.
 */
// Replace the "1", "2" and "3" with field IDs of fields that should have their selected values counted. If you are using the 
var $radios    = jQuery( '#field_GFFORMID_1, #field_GFFORMID_2, #field_GFFORMID_3' );
// Replace "4" with the ID of the Number field in which the count should be populated.
var $target    = jQuery( '#field_GFFORMID_4' );
// Replace "a" with the value you wish to count if selected.
var countValue = 'a';

function gwRecountValues() 
    $target.find( 'input' ).val( $radios.find( 'input:checked[value="' + countValue + '"]' ).length );


$radios.on( 'change', function() 
    gwRecountValues();
 );

gwRecountValues();

如果其他人使用它并遇到任何问题或需要改进,这里是可能在将来更新的源:https://github.com/gravitywiz/snippet-library/commit/d34eb169da937981c4a1ea49bb8a36df023bff1b

这个 sn-p 缺少的一件事是 php 验证。您可能不担心人们会改变他们的计数,但没有 PHP 验证也是可能的。

【讨论】:

【参考方案2】:

您可以尝试将以下内容添加到您的 functions.php 文件中

add_action( "gform_after_submission_66", "after_submission", 10, 2 ); //replace 66 with your form number
    function after_submission($entry, $form )
        $supplement_answers = array("milk", "apple", "pasta", "fries", "oats"); //replace array items with the supplement answers
        $advantage_answers = array("red", "blue", "pink", "purple", "yellow"); //replace array items with the advantage answers
        $field_nums = array("2","3","6","7","9"); //replace these field numbers with your own -- order then to align with answers above
        $count_fields = count($field_nums);
        $a = 0;
        $b = 0;
        for($i=0; $i<$count_fields; $i++)
            if($entry[$field_nums[$i]] == $supplement_answers[$i])
                $a = $a + 1;
            else if($entry[$field_nums[$i]] == $advantage_answers[$i])
                $b = $b + 1;
            
        
        if($a > $b)
             header('Location: https://website/supplements_page'); //replace url
        else if($a < $b)
             header('https://website/advantage_page'); //replace url -
        
    

【讨论】:

以上是关于重力根据所选值的数量形成条件逻辑的主要内容,如果未能解决你的问题,请参考以下文章

php 重力特权// GP条件逻辑日期//将用户的本地时间调整为UTC

所选值的总最大值

Ember JS:选择具有所选值的列表

oracle sql中where条件的动态数量

从头认识Spring-1.15 对SpEl的值的操作-逻辑运算以及条件表达式

根据复选框或选择创建第二个条目 - 重力形式