Как перезагрузить ReCaptcha с помощью JavaScript? - PullRequest
162 голосов
/ 30 июля 2010

У меня есть форма регистрации с AJAX, так что я хочу обновить изображение Recaptcha каждый раз, когда происходит ошибка (т.е. имя пользователя уже используется).

Я ищу код, совместимый с ReCaptcha, чтобы перезагрузить его с помощью JavaScript.

Ответы [ 9 ]

340 голосов
/ 11 августа 2010

Если вы используете reCaptcha v1 (, вероятно, не ):

Recaptcha.reload();

Для новой версии reCaptcha v2 используйте:

grecaptcha.reset();

, если на window уже есть загруженная Recaptcha.

(Обновлено на основе комментария @ SebiH ниже.)

59 голосов
/ 07 апреля 2015

Если вы используете версию 1

Recaptcha.reload();

Если вы используете версию 2

grecaptcha.reset();
14 голосов
/ 03 июня 2016

Важное замечание: Версия 1.0 API reCAPTCHA больше не поддерживается, обновите до версии 2.0.

Вы можете использовать grecaptcha.reset (); для сброса капчи.

Источник: https://developers.google.com/recaptcha/docs/verify#api-request

7 голосов
/ 16 января 2017
grecaptcha.reset(opt_widget_id)

Сбрасывает виджет reCAPTCHA.Необязательный идентификатор виджета может быть передан, в противном случае функция сбрасывает первый созданный виджет. (с веб-страницы Google)

7 голосов
/ 06 ноября 2014

Или вы можете просто смоделировать нажатие на кнопку обновления

// If recaptcha object exists, refresh it
    if (typeof Recaptcha != "undefined") {
      jQuery('#recaptcha_reload').click();
    }
5 голосов
/ 30 июля 2010

Попробуйте это

<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, captchadiv будет заполнен новым экземпляром recaptcha.

3 голосов
/ 12 сентября 2017

Для пользователей AngularJS:

$window.grecaptcha.reset();
2 голосов
/ 26 июня 2018

Для новой версии reCaptcha v2 используйте:

grecaptcha.reset();
0 голосов
/ 24 апреля 2015

, если вы используете новую версию 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>
...