AJAX 如果联系表驻留在 AJAX 加载的内容中,提交将不起作用
AJAX submission won't work if Contact Form resides in an AJAX-loaded content
如果 AJAX 加载的内容包含 CF7 联系表单,则 AJAX 提交将不适用于该表单。
建议的解决方法是将此行放在联系表单模板中:
<script src="/wp-content/plugins/contact-form-7/includes/js/scripts.js"></script>
这将使表单正常工作,但会导致另一个问题:
普通的 CF7 联系表单,放置在 AJAX 未加载的页面部分,将在提交时显示多个微调器图标。
可能是因为对于未放置在由 ajax 加载的内容中的表单,多次包含脚本会多次绑定表单代码。
自己找到解决办法。
如果您有一个未由 ajax 加载的联系表单和一个由 ajax 加载的联系表单,对于第二个,您需要修改模板添加:
<div id="ajaxform_wrapper">
<script>
jQuery('#ajaxform_wrapper > div.wpcf7 > form').wpcf7InitForm();
</script>
... contact form fields...
</div>
基本上我们将表单字段包装到 div #ajaxform_wrapper(随机名称)中,并且我们添加了一行 Javascript 仅绑定 CF7 代码对于该表单,避免对已初始化的表单进行多次绑定。
这会起作用,并且您在提交普通联系表单时不会看到多个微调框。
工作解决方案(调用 ajax 完成):
var ajaxContainer = $('#somediv_id'),
newCF7 = $('.wpcf7 > form', ajaxContainer);
newCF7.attr('action', "#" + newCF7.attr('id'));
wpcf7.initForm( newCF7 );
如果 AJAX 加载的内容包含 CF7 联系表单,则 AJAX 提交将不适用于该表单。
建议的解决方法是将此行放在联系表单模板中:
<script src="/wp-content/plugins/contact-form-7/includes/js/scripts.js"></script>
这将使表单正常工作,但会导致另一个问题: 普通的 CF7 联系表单,放置在 AJAX 未加载的页面部分,将在提交时显示多个微调器图标。
可能是因为对于未放置在由 ajax 加载的内容中的表单,多次包含脚本会多次绑定表单代码。
自己找到解决办法。 如果您有一个未由 ajax 加载的联系表单和一个由 ajax 加载的联系表单,对于第二个,您需要修改模板添加:
<div id="ajaxform_wrapper">
<script>
jQuery('#ajaxform_wrapper > div.wpcf7 > form').wpcf7InitForm();
</script>
... contact form fields...
</div>
基本上我们将表单字段包装到 div #ajaxform_wrapper(随机名称)中,并且我们添加了一行 Javascript 仅绑定 CF7 代码对于该表单,避免对已初始化的表单进行多次绑定。
这会起作用,并且您在提交普通联系表单时不会看到多个微调框。
工作解决方案(调用 ajax 完成):
var ajaxContainer = $('#somediv_id'),
newCF7 = $('.wpcf7 > form', ajaxContainer);
newCF7.attr('action', "#" + newCF7.attr('id'));
wpcf7.initForm( newCF7 );