200

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

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

4

8 回答 8

407

对于 reCaptcha v2,使用:

grecaptcha.reset();

如果您使用的是 reCaptcha v1(可能不是):

Recaptcha.reload();

如果window.

(根据@SebiH 下面的评论更新。)

于 2010-08-11T09:55:59.667 回答
68

如果您使用的是版本 1

Recaptcha.reload();

如果您使用的是版本 2

grecaptcha.reset();
于 2015-04-07T16:00:30.453 回答
50

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

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

来源:https ://developers.google.com/recaptcha/docs/display#js_api

于 2016-06-03T06:27:33.140 回答
12
grecaptcha.reset(opt_widget_id)

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

于 2017-01-16T09:00:44.183 回答
9

或者您可以模拟单击刷新按钮

// If recaptcha object exists, refresh it
    if (typeof Recaptcha != "undefined") {
      jQuery('#recaptcha_reload').click();
    }
于 2014-11-06T18:51:33.410 回答
7

尝试这个

<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>

如果您调用 showRecaptcha,验证码将填充一个新的 recaptcha 实例。

于 2010-07-30T12:27:11.270 回答
4

对于 AngularJS 用户:

$window.grecaptcha.reset();
于 2017-09-12T03:12:21.753 回答
1

如果您使用的是新的 recaptcha 2.0,请使用以下代码:

ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);

对于简单的 javascript

<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>
于 2015-04-24T11:18:55.440 回答