如何使用JavaScript重新加载ReCaptcha?

Ahm*_*gle 166 javascript recaptcha

我有一个使用AJAX的注册表单,以便我想在发生错误时刷新Recaptcha图像(即用户名已经在使用中).

我正在寻找与ReCaptcha兼容的代码,以便使用JavaScript重新加载它.

Ahm*_*gle 348

如果你正在使用reCaptcha v1(可能不是):

grecaptcha.reset();
Run Code Online (Sandbox Code Playgroud)

对于新版本的reCaptcha v2,请使用:

Recaptcha.reload();
Run Code Online (Sandbox Code Playgroud)

如果有一个已加载的Recaptcha window.

(根据@ SebiH的评论更新如下.)

  • 对于使用新reCAPTCHA的人:该行现已更改为`grecaptcha.reset();`([documenation](https://developers.google.com/recaptcha/docs/display#config)) (19认同)
  • 如果您不确定grecaptcha是否已加载,请使用`if(window.grecaptcha)grecaptcha.reset();` (4认同)

Das*_*sun 59

如果您使用的是版本1

Recaptcha.reload();
Run Code Online (Sandbox Code Playgroud)

如果您使用的是版本2

grecaptcha.reset();
Run Code Online (Sandbox Code Playgroud)

  • 复制已接受的答案并在 3 年后重新发布。紧急。 (3认同)
  • 我添加这个答案是因为我遇到了同样的问题。尽管接受的答案反映了当时的正确答案,但还不够清楚。至少对我来说,这就是为什么我决定添加一个具有明确分隔的新答案(接受的答案确实未能注意到版本之间的差异)。 (3认同)
  • @PRWhitehead 请查看编辑历史记录。顺便说一句,感谢您的反对票。 (2认同)

abh*_*itk 22

重要提示:不再支持reCAPTCHA API的1.0版,请升级到2.0版.

你可以使用grecaptcha.reset(); 重置验证码.

资料来源:https://developers.google.com/recaptcha/docs/verify#api-request


Alx*_*ejo 7

或者你可以模拟点击刷新按钮

// If recaptcha object exists, refresh it
    if (typeof Recaptcha != "undefined") {
      jQuery('#recaptcha_reload').click();
    }
Run Code Online (Sandbox Code Playgroud)


Kut*_*lia 7

grecaptcha.reset(opt_widget_id)
Run Code Online (Sandbox Code Playgroud)

重置reCAPTCHA小部件.可以传递可选的小部件ID,否则该函数将重置创建的第一个小部件.(来自Google的网页)


Tim*_*Tim 6

试试这个

<script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
          function showRecaptcha() {
            Recaptcha.create("YOURPUBLICKEY", 'captchadiv', {
              theme: 'red',
              callback: Recaptcha.focus_response_field
            });
          }
 </script>

<div id="captchadiv"></div>
Run Code Online (Sandbox Code Playgroud)

如果你调用showRecaptcha,将使用新的recaptcha实例填充captchadiv.