Gravity Forms提交出错时清空输入,如何保留已填字段?
解决Gravity Forms(Elementor嵌入+AJAX)提交错误后清空字段的问题
方法1:检查Gravity Forms核心设置
- 进入Gravity Forms后台,找到对应表单的「表单设置」,确认启用动态字段填充选项已勾选。这个选项默认开启,但如果被误关,会导致验证失败时无法保留用户输入。
- 再次确认表单的「AJAX提交」设置是正常启用状态。
方法2:添加PHP钩子强制保留字段值
如果默认设置无效,把以下代码添加到主题的functions.php文件,或者用代码片段插件(比如Code Snippets)来添加:
add_filter( 'gform_ajax_return', 'gf_keep_field_values_on_error', 10, 2 ); function gf_keep_field_values_on_error( $response, $form ) { // 仅在表单验证失败时执行 if ( isset( $response['is_valid'] ) && ! $response['is_valid'] ) { // 获取用户提交的原始数据 $submission = GFFormsModel::get_current_submission(); if ( $submission ) { // 将字段值回传给前端用于填充 $response['field_values'] = $submission['field_values']; } } return $response; }
这段代码会在AJAX返回错误时,把用户输入的字段值传递回前端,让Gravity Forms自动填充到对应字段里。
方法3:排查Elementor或缓存插件冲突
- 临时关闭Elementor的优化选项:进入Elementor > 设置 > 高级,禁用「加载JavaScript文件延迟」「合并JavaScript」等选项,这些优化可能干扰AJAX的字段保留逻辑。
- 如果用了缓存插件(比如WP Rocket、W3 Total Cache),临时禁用页面缓存和JS缓存,测试问题是否解决。缓存可能导致前端无法正确接收AJAX返回的字段值。
方法4:排查前端JS冲突
- 打开浏览器开发者工具(按F12),切换到「控制台」标签,查看提交表单时是否有JS报错。如果有错误,先修复这些冲突(比如禁用可疑的插件/主题脚本)。
- 可以临时切换到WordPress默认主题(比如Twenty Twenty-Four),测试表单是否正常保留字段,以此排除主题带来的冲突。
内容的提问来源于stack exchange,提问作者OhMad
相关产品推荐
相关产品推荐

