如何防止成功提交后联系表7清除表单

问题描述

我需要阻止Contact Form 7 wordpress插件在成功提交后清除表单。我希望用户能够继续编辑表单(并可能再次重新提交表单)。

谢谢。

解决方法

在第300行的JS wp-content/plugins/contact-form-7/includes/js/scripts.js中,有ajaxSuccess函数,描述如下:

            if ( 'mail_sent' == data.status ) {
                $form.each( function() {
                    this.reset();
                } );

                wpcf7.toggleSubmit( $form );
            }

这可能正是您要查找的,因为this.reset();在成功获得状态后会在表单中一一重置字段。

编辑:在您想要修改行为但不更改插件的信息之后,可以使用CF7附带的事件。 https://contactform7.com/dom-events/ 添加wpcf7submit观察者以将数据存储在本地存储中,并添加另一个观察者(这次wpcf7mailsent)以将数据写回到表单中。

,

我实际上找到了解决方案。您只需将事件处理程序附加到reset事件,然后执行e.preventDefault()

setTimeout( function(){
    $( '.my-form form' ).on( 'reset',function(e) {
        e.preventDefault();
    });
},500)

没有超时就无法工作,但这应该足够安全。在0.5秒内可以填写表单的用户并不多:-)

也许不是一个完美的解决方案,但它适用于我的情况。

编辑:这是一个没有setTimeout的新版本(感谢@Jan Myszkier)

$(document).on('reset','.my-form form',function(e) {
    e.preventDefault();
});