Mam formularz rejestracji w AJAX, więc chcę odświeżyć obraz Recaptcha za każdym razem, gdy wystąpi błąd (tj. Nazwa użytkownika jest już używana).
Szukam kodu kompatybilnego z ReCaptcha, aby przeładować go za pomocą JavaScript.
Mam formularz rejestracji w AJAX, więc chcę odświeżyć obraz Recaptcha za każdym razem, gdy wystąpi błąd (tj. Nazwa użytkownika jest już używana).
Szukam kodu kompatybilnego z ReCaptcha, aby przeładować go za pomocą JavaScript.
Odpowiedzi:
Ważne: wersja 1.0 interfejsu API reCAPTCHA nie jest już obsługiwana, uaktualnij do wersji 2.0.
Możesz użyć grecaptcha.reset (); aby zresetować captcha.
Źródło: https://developers.google.com/recaptcha/docs/verify#api-request
W przypadku reCaptcha v2 użyj:
grecaptcha.reset();
Jeśli używasz reCaptcha v1 ( prawdopodobnie nie ):
Recaptcha.reload();
Nastąpi to, jeśli w pliku window
.
(Zaktualizowano na podstawie komentarza @ SebiH poniżej.)
grecaptcha.reset();
( dokumentacja )
grecaptcha.reset();
do moich aplikacji do reagowania i działa idealnie
if (window.grecaptcha) grecaptcha.reset();
Jeśli używasz wersji 1
Recaptcha.reload();
Jeśli używasz wersji 2
grecaptcha.reset();
grecaptcha.reset(opt_widget_id)
Resetuje widżet reCAPTCHA. Można przekazać opcjonalny identyfikator widgetu, w przeciwnym razie funkcja resetuje pierwszy utworzony widget. (ze strony internetowej Google)
Spróbuj tego
<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>
Jeśli zadzwonisz do showRecaptcha, captchadiv zostanie wypełnione nową instancją recaptcha.
Możesz też po prostu zasymulować kliknięcie przycisku odświeżania
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Recaptcha
i grecaptcha
oba są niezdefiniowane na mojej stronie. U mnie to zadziałało, z niewielką modyfikacją:if( $("#recaptcha_reload").length > 0 ){ ....
Dla użytkowników AngularJS:
$window.grecaptcha.reset();
W przypadku nowej wersji reCaptcha v2 użyj:
grecaptcha.reset();
jeśli używasz nowej recaptcha 2.0, użyj tego: dla kodu za:
ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);
dla prostego javascript
<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>