联系表格7 on_submit不起作用

时间:2016-09-15 04:53:56

标签: wordpress contact-form-7

我正在尝试在提交表单时显示提醒。

我将此代码添加到Contact Form 7插件(版本4.2.2)的“其他设置”

on_submit: “警报( '提交');”

什么都没有出现。

  • 控制台没有错误或警告
  • 萤火虫没有错误或警告
  • 我认为自联系表格7成功后没有Javascript冲突 发送电子邮件
  • 我确信该表单已“提交”,因为我可以看到联系人 表格7表格验证错误

如何解决或调试此问题的任何想法?

3 个答案:

答案 0 :(得分:2)

如果不看源代码就不容易猜测,但我今天感到高兴。

你的表格是否正常运作? 如果没有,联系表格7的JavaScript可能无法在您的网站上运行。

我将向您展示一些可能的原因。

未加载JavaScript文件

这是我最近看到的原因。这是由于您的模板缺少调用JavaScript排队函数。所需的函数是wp_head()和wp_footer(),它们分别在header.php和footer.php中,大多数正确的主题。

与其他JavaScript冲突

许多插件和主题加载自己的JavaScript。其中一些可能已被错误地创建,因此与其他插件冲突。在大多数情况下,当发生此类冲突时,您可以使用Firebug(Firefox的附加组件)找到JavaScript错误。

HTML结构无效

与其他JavaScript一样,Contact Form 7的JavaScript遍历和操纵HTML的结构。因此,如果原始HTML结构无效,则无法正常工作。您可以使用HTML验证程序检查HTML是否有效。我建议在这种情况下使用W3C标记验证服务。

我的建议是使用CF 7默认的方式来实现你的想法 - 我们称之为:

1.最佳选择”。

在WP仪表板上,转到“联系人”(CF7)并选择您的表单,然后转到“其他设置”选项卡。

在那里,您可以添加类似的代码:

on_sent_ok: "alert('sent ok');"
on_submit: "alert('submit');"

如果您设置on_sent_ok:后跟单行JavaScript代码,则可以告知联系人表单成功发送邮件时应执行的代码。同样,使用on_submit:,您可以告知在提交表单时应执行的代码,而不管结果如何。

在这两个操作中,您可以像使用.js文件一样使用各种JS代码:

on_sent_ok: "some js code here"

你可以用它来调用这样的函数:

on_sent_ok: "your_function();"

或者写一些代码(这个代码重定向到感谢页面):

on_sent_ok: "document.location='/thank-you-page/';"

<强> 2。另一种选择是使用jQuery处理它:

联系表单7热衷于发出一些冒泡到文档对象的Javascript事件。在4.2版中,可以在contact-form-7 / includes / js / scripts.js中找到它们。如果你正在使用jQuery,你可以访问这样的事件:

$(document).on('spam.wpcf7', function () { console.log('submit.wpcf7 was triggered!'); });

$(document).on('invalid.wpcf7', function () { console.log('invalid.wpcf7 was triggered!'); });

$(document).on('mailsent.wpcf7', function () { console.log('mailsent.wpcf7 was triggered!'); });

$(document).on('mailfailed.wpcf7', function () { console.log('mailfailed.wpcf7 was triggered!'); });

编辑:

使用了其中一些jQuery选项但不知何故已弃用,所以如果遇到问题,请尝试使用eg。 'wpcf7:mailsent'代替'mailsent.wpcf7'。

相同的格式适用于其他选项,实际上所有选项都可在上述文件中观察到:

可湿性粉剂内容/插件/接触形式-7 /包括/ JS /的script.js

答案 1 :(得分:0)

您有任何关于我们进一步检查的链接吗?这很难。

但是:&#34;我确信该表格是&#34;已提交&#34;因为我可以看到联系表格7表格验证错误&#34; - &GT;是服务器验证还是前端验证?也许它不发送?

一切顺利

答案 2 :(得分:0)

我认为有些东西阻止了你的弹出窗口。

尝试使用&#34; console.log&#34;进行调试,以便将此作为潜在问题消除:

on_submit:"console.log('Submitted');"