【发布时间】:2010-11-05 06:53:06
【问题描述】:
可以在一种形式中添加多个 reCAPTCHAS 吗?我试过这样做,甚至给多个 reCAPTCHAS 不同的 ID,但是当我在浏览器中加载页面时,只显示其中一个。
这是设计使然吗?我需要两个 reCAPTCHAS,因为一个用于登录,另一个用于注册表单,将显示在同一页面上。
谢谢! 重量
【问题讨论】:
-
您可以只使用一个表单来登录和注册。
可以在一种形式中添加多个 reCAPTCHAS 吗?我试过这样做,甚至给多个 reCAPTCHAS 不同的 ID,但是当我在浏览器中加载页面时,只显示其中一个。
这是设计使然吗?我需要两个 reCAPTCHAS,因为一个用于登录,另一个用于注册表单,将显示在同一页面上。
谢谢! 重量
【问题讨论】:
任何时候一个页面都只支持一个 Cpatcha。您可以做的是在表单加载后使用 AJAX 和 lod 验证码。
【讨论】:
在谷歌快速搜索后,目前似乎不可能。 One suggestion 我看到的是在用户提交表单时弹出一个模态recaptcha。 ondemandcaptcha for Ruby.
【讨论】:
我最初被这个帖子引导相信没有简单的答案,但在深入研究 Recaptcha ajax 库之后,我可以告诉你这不是真的! TLDR,工作 jsfiddle:http://jsfiddle.net/Vanit/Qu6kn/
您可以覆盖 Recaptcha 回调以对挑战做任何您想做的事情。您甚至不需要代理 div,因为覆盖后 DOM 代码将不会执行。每当您想再次触发回调时,请调用 Recaptcha.reload()。
function doSomething(challenge){
$(':input[name=recaptcha_challenge_field]').val(challenge);
$('img.recaptcha').attr('src', '//www.google.com/recaptcha/api/image?c='+challenge);
}
//Called on Recaptcha.reload()
Recaptcha.finish_reload = function(challenge,b,c){
doSomething(challenge);
}
//Called on page load
Recaptcha.challenge_callback = function(){
doSomething(RecaptchaState.challenge)
}
Recaptcha.create("YOUR_PUBLIC_KEY");
【讨论】:
现在可以通过显式的验证码创建轻松地做到这一点。在这里查看我的答案:
【讨论】:
仅在需要时使用 Recaptcha AJAX API 加载每个 Recaptcha 并不太难,请参阅我的帖子:
【讨论】:
验证码有一个 img 元素 #recaptcha_challenge_image 元素,所以在你在一个 div 中设置 recaptcha 后说“regCaptch”,得到那个 img src attr ,将您的其他验证码 div html 设置为旧的 html,然后将 #recaptcha_challenge_image src 设置为您获得的 src,这是一个工作示例
var reCaptcha_src = $('#recaptcha_challenge_image').attr('src');
$('#texo').html($('#regCaptch').html());
$('#recaptcha_challenge_image').attr('src',reCaptcha_src);
【讨论】: