You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

reCAPTCHA v3集成联系表单提交按钮的技术疑问

reCAPTCHA v3 集成疑问解答

问题1:Google初始化指南注释中的「variables」指什么?

Google示例代码里的注释<!-- Replace the variables below. -->,这里的variables指两个核心占位内容:

  • 表单ID:示例里的demo-form是占位符,需要替换成你网站中实际的表单ID(比如你的表单ID是reCAPTCHAform)
  • 回调函数名:如果你的回调函数不是示例里的onSubmit,也要对应替换为自定义的函数名(比如你用的onSubmitForm)

Google官方示例代码:

<!-- Replace the variables below. -->
<script>
  function onSubmit(token) {
    document.getElementById("demo-form").submit();
  }
</script>

你当前的回调函数代码:

<script>
  function onSubmitForm(token) {
    document.getElementById("contact").submit();
  }
</script>

问题2:是否需要将登录交互代码中的token逻辑加入到表单的onSubmitForm函数中?

不需要。原因如下:

你当前的提交按钮用了reCAPTCHA v3的自动绑定方式——通过给按钮添加g-reCAPTCHA类,配合data-sitekey、data-callback、data-action属性,reCAPTCHA会自动完成token的生成、验证流程,验证通过后会调用你的onSubmitForm函数,此时函数参数里的token就是已生成的验证令牌。

而你看到的登录交互代码属于手动调用方式,适用于需要自定义触发时机、不需要自动绑定的场景(比如点击按钮后要先执行其他业务逻辑再验证reCAPTCHA),和你当前的实现方式不冲突,也不需要额外整合。

关键修正点

你的onSubmitForm函数存在一个错误:你用document.getElementById("contact")获取表单,但实际表单ID是reCAPTCHAform,需要修改为:

function onSubmitForm(token) {
  document.getElementById("reCAPTCHAform").submit();
}

另外,确保页面已引入reCAPTCHA v3核心脚本,否则自动绑定逻辑无法生效:

<script src="https://www.google.com/recaptcha/api.js?render=6LcuEMspAAAAABuu38RUpLBx6ntP-J5XcAU1CHHm"></script>

你的表单代码:

<form class="contact" name="contact" id="reCAPTCHAform" action="mailto:emailaddresshere" method="post" autocomplete="off">
  <fieldset>
    <legend>Contact Home Sewn Treasures</legend>
    <label>First Name</label>
    <input type="text" name="firstName" id="firstName" size="50" /><br />
    <br />
    <label>Last Name</label>
    <input type="text" name="lastName" id="lastName" size="50" /><br />
    <br />
    <label>E-Mail Address*</label>
    <input type="email" name="emailAddress" id="emailAddress" size="50" required /><br />
    <br />
    <label>Subject</label>
    <input type="text" name="subject" id="subject" size="50" /><br />
    <br />
    <label>Message*</label>
    <textarea name="message" id="yourMessage" size="150" required></textarea><br />
    <input class="reset" type="reset" value="Reset" />
    <button class="g-reCAPTCHA" id="submit" data-sitekey="6LcuEMspAAAAABuu38RUpLBx6ntP-J5XcAU1CHHm" data-callback="onSubmitForm" data-action="submit" onclick="return changeCursor();">Submit</button>
  </fieldset>
</form>

内容的提问来源于stack exchange,提问作者mmcnaug2024

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 00:43:12