如何阻止Elementor Pro表单提交后清空字段?
Elementor Pro表单提交后自动刷新问题的解决方案分享
问题场景
在WordPress网站使用Elementor Pro创建表单,点击提交按钮后后端能正常处理数据,但页面会自动刷新,所有表单字段恢复默认值。以一个两数相加功能的表单为例,提交后计算结果能正常返回,但输入的数字会被清空,严重影响Web应用的使用体验。
当前实现代码
前端展示与交互代码
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> jQuery( document ).ready(function( $ ){ jQuery( document ).on('submit_success', function(event, response){ document.getElementById("result").innerHTML = response.data['1'].result; }); }); </script> <p id='result'>The result will appear here.</p>
后端处理代码(通过Code Snippets插件添加)
function add_two_numbers($fields) { $a = $fields['a']; $b = $fields['b']; return $a + $b; } // 处理自定义表单提交 add_action( 'elementor_pro/forms/new_record', function( $record, $handler ) { // 校验目标表单 $form_name = $record->get_form_settings( 'form_name' ); if ( 'AdderForm' !== $form_name ) { return; } $raw_fields = $record->get( 'fields' ); $fields = []; foreach ( $raw_fields as $id => $field ) { $fields[ $id ] = $field['value']; } $output['result'] = add_two_numbers($fields); $handler->add_response_data( true, $output ); }, 10, 2 );
无效的官方尝试路径
- 查阅Elementor官方文档,尝试设置动态默认值
- 排查表单内置的所有相关设置
- 搜索「Elementor提交后不刷新表单」「Elementor保存表单默认值」等关键词,未找到官方支持的解决方案
非直观解决方案
通过拦截表单的默认提交行为,阻止页面刷新,同时保留Elementor的AJAX提交逻辑,实现提交后字段不重置:
jQuery(document).ready(function($) { // 拦截目标表单的提交事件 $(document).on('submit', '.elementor-form', function(e) { // 仅针对名为AdderForm的表单 if ($(this).find('input[name="form_name"]').val() === 'AdderForm') { e.preventDefault(); // 阻止页面默认刷新 // 触发Elementor的AJAX提交逻辑 $(this).find('.elementor-button[type="submit"]').trigger('click'); } }); // 保留原有的结果展示回调 $(document).on('submit_success', function(event, response) { document.getElementById("result").innerHTML = response.data['1'].result; }); });
注意:需确保Elementor表单设置中已开启「AJAX提交」选项,否则上述逻辑无法生效。
欢迎提供更优方案,或告知Elementor新版本是否已原生支持提交后保留表单字段的功能。
内容的提问来源于stack exchange,提问作者Dmytro Nikolaiev
相关产品推荐
相关产品推荐

