У меня есть форма регистрации с AJAX, так что я хочу обновить изображение Recaptcha каждый раз, когда происходит ошибка (т.е. имя пользователя уже используется).
Я ищу код, совместимый с ReCaptcha, чтобы перезагрузить его с помощью JavaScript.
Если вы используете reCaptcha v1 (, вероятно, не ):
Recaptcha.reload();
Для новой версии reCaptcha v2 используйте:
grecaptcha.reset();
, если на window уже есть загруженная Recaptcha.
window
(Обновлено на основе комментария @ SebiH ниже.)
Если вы используете версию 1
Если вы используете версию 2
Важное замечание: Версия 1.0 API reCAPTCHA больше не поддерживается, обновите до версии 2.0.
Вы можете использовать grecaptcha.reset (); для сброса капчи.
Источник: https://developers.google.com/recaptcha/docs/verify#api-request
grecaptcha.reset(opt_widget_id)
Сбрасывает виджет reCAPTCHA.Необязательный идентификатор виджета может быть передан, в противном случае функция сбрасывает первый созданный виджет. (с веб-страницы Google)
Или вы можете просто смоделировать нажатие на кнопку обновления
// If recaptcha object exists, refresh it if (typeof Recaptcha != "undefined") { jQuery('#recaptcha_reload').click(); }
Попробуйте это
<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.
Для пользователей AngularJS:
$window.grecaptcha.reset();
, если вы используете новую версию 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>