我正在为学校的一对表格上使用Gravity Forms(WordPress)。它们具有应用程序的初始形式。每个提交都会分配一个唯一的五个字符键来识别它。这将保存在隐藏字段中。此表单包含名称,电子邮件,电话,地址等内容。此表单已启动并正常运行,效果很好。
一旦学生被录取,我们现在需要另一个表格用于注册。此表单将是一个多页表单,其中包含有关历史/父母等的更多详细信息和各种问题。我的想法是第一个页面包含一个字段,该字段要求分配给其应用程序的密钥。提交第一页后,表单将根据密钥查询数据库,并返回原始应用程序中适用于第二个表单的任何信息。因此,不必手动重新输入名称,电子邮件,电话等内容。
我开始走动人口的道路,遇到一些麻烦。看起来在多页表单上的操作方式不同,取决于您是否使用AJAX。有没有人有过对表单填充进行这种键查找的经验?我可以在vanilla PHP / MySQL中做到这一点没有问题,但Gravity Forms的东西让我感到难过。
答案 0 :(得分:0)
您的问题不够清楚,尚待解释。但是,由于我也遇到了多页重力形式的问题,并且在网上找不到很少的帮助,因此,这是我的经验。
如果从一页转到下一页,则可以使用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将保留收到的第一个值,并且将不再更改。
当您的字段取决于上一页的字段输入,并且用户来回更改这些字段时,这是一个问题。您的依赖字段不会在任何钩子上更新。我已经使用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>
希望这可以对某人有所帮助。
答案 1 :(得分:0)
Gravity Forms Populate Anything可以很好地解决这一问题。
根据提供的参考ID配置要填充条目数据的字段,该字段与具有相同参考ID的条目相匹配: