Ho un modulo di iscrizione con AJAX, quindi desidero aggiornare l'immagine di Recaptcha ogni volta che si verifica un errore (ovvero nome utente già in uso).
Sto cercando un codice compatibile con ReCaptcha per ricaricarlo utilizzando JavaScript.
Ho un modulo di iscrizione con AJAX, quindi desidero aggiornare l'immagine di Recaptcha ogni volta che si verifica un errore (ovvero nome utente già in uso).
Sto cercando un codice compatibile con ReCaptcha per ricaricarlo utilizzando JavaScript.
Risposte:
Importante: la versione 1.0 dell'API reCAPTCHA non è più supportata, eseguire l'aggiornamento alla versione 2.0.
Puoi usare grecaptcha.reset (); per ripristinare il captcha.
Fonte: https://developers.google.com/recaptcha/docs/verify#api-request
Per reCaptcha v2, utilizzare:
grecaptcha.reset();
Se stai usando reCaptcha v1 ( probabilmente no ):
Recaptcha.reload();
Ciò avverrà se è presente un Recaptcha già caricato su window
.
(Aggiornato in base al commento di @ SebiH di seguito.)
grecaptcha.reset();
( documentazione )
grecaptcha.reset();
per le mie app di reazione e funziona perfettamente
if (window.grecaptcha) grecaptcha.reset();
Se si utilizza la versione 1
Recaptcha.reload();
Se stai usando la versione 2
grecaptcha.reset();
grecaptcha.reset(opt_widget_id)
Reimposta il widget reCAPTCHA. È possibile passare un ID widget opzionale, altrimenti la funzione ripristina il primo widget creato. (dalla pagina Web di Google)
Prova questo
<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>
Se chiami showRecaptcha, captchadiv verrà popolato con una nuova istanza di recaptcha.
Oppure potresti semplicemente simulare un clic sul pulsante di aggiornamento
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Recaptcha
e grecaptcha
sono entrambi indefiniti nella mia pagina. Questo ha funzionato per me, con una leggera modifica:if( $("#recaptcha_reload").length > 0 ){ ....
Per gli utenti di AngularJS:
$window.grecaptcha.reset();
Per la nuova versione di reCaptcha v2 utilizzare:
grecaptcha.reset();
se stai usando il nuovo recaptcha 2.0 usa questo: per il codice dietro:
ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);
per javascript semplice
<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>