您的问题不够清楚,有待解释。但是,由于我也遇到了多页重力表单的问题,并且在网上几乎找不到帮助,所以这是我的经验。
如果您从一页转到下一页,您可以使用rgpost("input_" . YOUR_FIELD_ID); 访问前一页中的字段值。复选框集合由“input_”.FIELD_ID.“_”.OPTION_INDEX 访问。根据我的经验,动态填充的下拉菜单似乎被重置了。如果您遇到这种情况,在转到下一页之前,您可以将这些字段中的任何值复制到隐藏字段中,然后从隐藏字段中读取。
即使触发了相应的挂钩,也不会更新已经具有默认值 (field->defaultValue) 的字段。例如:add_filter('gform_field_value_my_field', 'populate_your_field')。您在 populate_your_field 中返回的值的转储将显示与您检查 my_field 时不同的值,my_field 应该接收此值。 my_field 将保留它收到的第一个值并且不会再改变。
当您的字段依赖于先前页面的字段输入并且用户来回更改这些字段时,这是一个问题。您的依赖字段不会在任何挂钩上更新。我已经对 gform_field_value、gform_pre_render、gform_field_validation 和 gform_post_paging 进行了广泛的测试。
我找到了一个解决方案:在 gform_pre_render 挂钩中回显一个带有数据属性的隐藏 div,并通过 javascript 填充字段。
add_filter('gform_pre_render', 'dynamic_population', 10, 1);
function dynamic_population($form) {
echo "<div id='my_data' style='display:none' data-myjsonarray='.json_encode(my_json_array).'></div>";
}
在您的重力表单中,您可以创建一个 html 字段并在其中添加 javascript。
<script>
window.onload = function() {
//custom function that fills given gform dropdown with given array
fill_dropdown(
jQuery('#input_1_1'),
jQuery('#my_data').data('myjsonarray')
);
}
</script>
希望这对某人有所帮助。