问题描述
我需要阻止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();
});