Eu tenho um formulário de inscrição no AJAX para poder atualizar a imagem do Recaptcha sempre que ocorrer um erro (por exemplo, nome de usuário já em uso).
Estou procurando um código compatível com o ReCaptcha para recarregá-lo usando JavaScript.
Eu tenho um formulário de inscrição no AJAX para poder atualizar a imagem do Recaptcha sempre que ocorrer um erro (por exemplo, nome de usuário já em uso).
Estou procurando um código compatível com o ReCaptcha para recarregá-lo usando JavaScript.
Respostas:
Importante: A versão 1.0 da API reCAPTCHA não é mais suportada, atualize para a Versão 2.0.
Você pode usar grecaptcha.reset (); para redefinir o captcha.
Fonte: https://developers.google.com/recaptcha/docs/verify#api-request
Para o reCaptcha v2, use:
grecaptcha.reset();
Se você estiver usando o reCaptcha v1 ( provavelmente não ):
Recaptcha.reload();
Isso será feito se já houver um Recaptcha carregado no window
.
(Atualizado com base no comentário de @ SebiH abaixo.)
grecaptcha.reset();
( documenation )
grecaptcha.reset();
para o meu reagir apps, e ele funciona perfeitamente
if (window.grecaptcha) grecaptcha.reset();
Se você estiver usando a versão 1
Recaptcha.reload();
Se você estiver usando a versão 2
grecaptcha.reset();
grecaptcha.reset(opt_widget_id)
Redefine o widget reCAPTCHA. Um ID de widget opcional pode ser passado, caso contrário, a função redefine o primeiro widget criado. (da página da web do Google)
Tente isto
<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 você chamar showRecaptcha, o captchadiv será preenchido com uma nova instância de recaptcha.
Ou você pode simular um clique no botão Atualizar
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Recaptcha
e grecaptcha
ambos estão indefinidos na minha página. Isso funcionou para mim, com uma ligeira modificação:if( $("#recaptcha_reload").length > 0 ){ ....
Para usuários do AngularJS:
$window.grecaptcha.reset();
Para nova versão do reCaptcha v2, use:
grecaptcha.reset();
se você estiver usando o novo recaptcha 2.0, use isto: para o código por trás:
ScriptManager.RegisterStartupScript(this, this.GetType(), "CaptchaReload", "$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});", true);
para javascript simples
<script>$.getScript(\"https://www.google.com/recaptcha/api.js\", function () {});</script>