我有一个多页的表格。

我想在此表单的最后一页执行一些自定义JavaScript。从理论上讲,我要做的就是检索当前页码并编写一个有条件的。

很简单,对吧? 显然不是。

我最初的解决方法是这样的:

if ($('gform_page').last().css('display') !== 'none') {
    // perform custom scripts now that the last
    // Gravity Form page is being shown
}

但是$('...').css('display')在表单中我尝试过的每个元素上都返回undefined。每次用户单击“下一步”按钮都会触发自定义脚本。没有雪茄。

然后,在查看the Gravity Forms documentation之后,我发现了两个看起来很有用的事件:gform_post_rendergform_page_loaded

但是,该文档未提供有关如何访问参数的说明。

jQuery(document).bind('gform_page_loaded', function(event, form_id, current_page){
    console.log(current_page);
    // returns nothing when loaded in the footer
    // returns [Object, object] when placed in an HTML field in the form
});

除了没有正确的代码外,我还怀疑我在正确的位置没有代码,因为我也没有在功能.php和header.php(as the documentation suggests)中尝试以下操作:

<?php
function enqueue_custom_script($form, $is_ajax){
    if ($is_ajax) :
        echo '<script>console.log(current_page);</script>';
    endif;
}
add_action("gform_enqueue_scripts", "enqueue_custom_script", 10, 2);
?>

题:

我需要什么代码来检索当前页码,更重要的是,该代码放在哪里?

最佳答案

OP接受的答案可能很好用,但是如果您具有使用Ajax进行分页的表单设置,那么它就行不通。

在那种情况下,我只能使用Javascript和以下方法使其工作;

http://www.gravityhelp.com/documentation/page/Gform_post_render

jQuery(document).bind('gform_post_render', function (event, formId, current_page) {
    if (current_page == 2) {
        // do something
    }
});

您当然可以使用formId参数将其限制为特定形式

08-06 21:57