使用当前版本的 Recaptcha(reCAPTCHA API 版本 2.0),您可以在一个页面上拥有多个验证码。
无需克隆验证码,也无需尝试解决此问题。您只需要为验证码放置多个 div 元素,并在其中显式呈现验证码。
这很容易与谷歌验证卡 api:
https://developers.google.com/recaptcha/docs/display#explicit_render
下面是示例 html 代码:
<form>
<h1>Form 1</h1>
<div><input type="text" name="field1" placeholder="field1"></div>
<div><input type="text" name="field2" placeholder="field2"></div>
<div id="RecaptchaField1"></div>
<div><input type="submit"></div>
</form>
<form>
<h1>Form 2</h1>
<div><input type="text" name="field3" placeholder="field3"></div>
<div><input type="text" name="field4" placeholder="field4"></div>
<div id="RecaptchaField2"></div>
<div><input type="submit"></div>
</form>
在你的javascript代码中,你必须为recaptcha定义一个回调函数:
<script type="text/javascript">
var CaptchaCallback = function() {
grecaptcha.render('RecaptchaField1', {'sitekey' : '6Lc_your_site_key'});
grecaptcha.render('RecaptchaField2', {'sitekey' : '6Lc_your_site_key'});
};
</script>
在此之后,您的 recaptcha 脚本 url 应如下所示:
<script src="https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit" async defer></script>
或者,您可以提供类名并使用类选择器循环这些元素并调用 .render() 而不是为 recaptcha 字段提供 ID