我有一个多页的表格。
我想在此表单的最后一页执行一些自定义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_render
和gform_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
});
除了没有正确的代码之外,我还怀疑我没有将代码放在正确的位置,因为我也在functions.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);
?>
提问:
我需要什么代码来检索当前页码,更重要的是,我应该把代码放在哪里?
9条答案
按热度按时间rbpvctlc1#
我知道了
函数
rgpost
显然是访问当前页码的关键。在我自己摸索了一番之后,我能够让下面的代码在functions.php和header.php中的wp_head()函数之前都能工作。如果你复制/粘贴上面的代码,请确保:
10
替换为要检查的页面wp_enqueue_script
中的参数正确63
替换为您的表单ID我发现一些有用的资源:
gform_validation
筛选器文档的本节gform_enqueue_scripts
的文档。6yoyoihd2#
OP接受的答案可能很好地工作,但如果您使用 AJAX 对表单进行分页设置,则它不起作用。
在这种情况下,我只能使用JavaScript和以下方法来让它工作;
http://www.gravityhelp.com/documentation/page/Gform_post_render
当然,您可以使用
formId
参数将其限制为特定的表单66bbxpm53#
当前接受的答案仅在用户从未进入表单中的前一页时有效,如果他们这样做了,那么
gform_sourge_page_number
总是滞后一个。我找到了一个更好的解决方案(以这个钩子为例,但你应该能够在任何传递了$form的钩子中使用它):GFFormDisplay::get_current_page( $form_id )
是许多方便的未文档化函数之一。qjp7pelc4#
我写了一个返回当前页面的小函数:
ycggw6v25#
除了已接受的答案之外,下面是一个查找当前页面并动态查找表单中有多少页面的示例。此示例根据按钮文本是否为窗体的最后一页来更改按钮文本,而不是将脚本入队。
oxcyiej76#
下面的代码在JavaScript中对我有用:
它会以多页的形式给予你当前页面的页码。
35g0bw717#
使用Jquery
5jvtdoz28#
尝试使用这个:
在控制台中使用上面的方法来检查它是如何工作的。
6xfqseft9#
对于任何在PHP中寻找答案的人。
您也可以使用
GFFormDisplay
类来获取PHP中的当前页面。示例:
\GFFormDisplay::get_current_page({$form_id})
从Gravity Forms插件检索的信息(行652)。
如果您想了解有关
GFFormDisplay
类的更多信息,请查看以下内容:https://github.com/wp-premium/gravityforms/blob/master/form_display.php