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