我有一个使用AJAX的注册表单,以便我想在任何时候发生错误(即用户名已经在使用)刷新Recaptcha图像。

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


当前回答

试试这个

<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,验证码将被一个新的验证码实例填充。

其他回答

grecaptcha.reset(opt_widget_id)

重置reCAPTCHA小部件。可以传递一个可选的小部件id,否则函数将重置创建的第一个小部件。(来自谷歌的网页)

对于reCaptcha v2,使用:

grecaptcha.reset();

如果你正在使用reCaptcha v1(可能没有):

Recaptcha.reload();

如果窗口上已经加载了重新验证码,这就可以了。

(根据下面@SebiH的评论更新。)

试试这个

<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,验证码将被一个新的验证码实例填充。

对于AngularJS用户:

$window.grecaptcha.reset();

如果您使用的是版本1

Recaptcha.reload();

如果您使用的是版本2

grecaptcha.reset();