У мене є форма реєстрації в 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>