使用当前版本的Recaptcha (reCAPTCHA API version 2.0),您可以在同一个页面上使用多个Recaptchas。
没有必要克隆Recaptcha或尝试解决问题。您只需为Recaptchas放置多个<div>
元素,并在其中显式地呈现Recaptchas即可。
借助Google Recaptcha API,这很容易。以下是示例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>
或者,您可以为您的Recaptcha字段提供一个类名,使用您的类选择器循环这些元素并调用.render()
,而不是给它们分配ID。
iframe
相比,像Hüseyin Yağlı
的回答中推荐的使用JavaScript是解决该问题的更好方式。大多数浏览器应该支持JavaScript,而默认的reCAPTCHA也已经使用了JavaScript。但我不知道如果没有JavaScript支持,需要做些什么才能解决这个问题。 - Edward