我有一个多页的表格。
我想在此表单的最后一页执行一些自定义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
});
除了没有正确的代码外,我还怀疑我在正确的位置没有代码,因为我也没有在功能.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
参数将其限制为特定形式