如何使用JavaScript重新加载ReCaptcha?

我有一个AJAXregistry单,以便在发生错误时(即用户名已被使用),我想刷新Recaptcha图像。

我正在寻找与ReCaptcha兼容的代码来使用JavaScript重新加载它。

我想我现在可以回答我自己的问题。 它是

Recaptcha.reload(); 

在JavaScript中,如果在窗口上已经加载了Recaptcha。


编辑: @SebiH更新,现在这个命令是:

 grecaptcha.reset(); 

如果您使用版本1

 Recaptcha.reload(); 

如果您正在使用版本2

 grecaptcha.reset(); 

或者你可以模拟点击刷新button

 // If recaptcha object exists, refresh it if (typeof Recaptcha != "undefined") { jQuery('#recaptcha_reload').click(); } 

重要说明:不再支持reCAPTCHA API 1.0版,请升级到2.0版。

你可以使用grecaptcha.reset(); 重置validation码。

来源: https : //developers.google.com/recaptcha/docs/verify#api-request

尝试这个

 <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实例。

 grecaptcha.reset(opt_widget_id) 

重置reCAPTCHA小部件。 可以传递一个可选的小部件ID,否则函数会重置所创build的第一个小部件。 (来自Google的网页)

对于AngularJS用户:

 $window.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>