【问题标题】:Reset Multiple Google reCAPTCHA重置多个 Google reCAPTCHA
【发布时间】:2015-09-29 10:20:00
【问题描述】:

我在一个页面上有两个表单,它们都使用 Google reCAPTCHA。

每当我使用grecaptcha.reset(); 时,它只会重置第一个实例。

以下 JS 呈现 reCAPTCHA(s)

var recaptcha1;
var recaptcha2;

var myCallBack = function() {
    //Render the recaptcha1 on the element with ID "recaptcha1"
    recaptcha1 = grecaptcha.render('recaptcha1', {
        'sitekey' : '1234', //Replace this with your Site key
        'theme' : 'light'
    });

    //Render the recaptcha2 on the element with ID "recaptcha2"
    recaptcha2 = grecaptcha.render('recaptcha2', {
        'sitekey' : '1234', //Replace this with your Site key
        'theme' : 'light'
    });
};

如何重置所有实例或定位特定实例。

【问题讨论】:

    标签: javascript jquery recaptcha


    【解决方案1】:

    mbejda 的回答几乎是正确的,但并不完全正确。

    经过反复试验,我发现你必须这样做:

    grecaptcha.reset(recaptcha1);
    grecaptcha.reset(recaptcha2);
    

    为了清楚起见,您必须保存 grecaptcha.render() 的返回值,并将这些变量传递给 reset() 函数。传入验证码的字符串 ID 不起作用。

    【讨论】:

    • 此外,如果您记录返回值,它们最终会是 0、1、2 等。对于我的用例,由于我无法控制的限制,上述情况就足够了只需运行以下命令:grecaptcha.reset(0); grecaptcha.reset(1);
    【解决方案2】:
    grecaptcha.reset(0);
    grecaptcha.reset(1);
    

    【讨论】:

      【解决方案3】:

      一种更动态的方法来迭代验证码控件,无论它们有多少,并将它们全部重置。 (使用 jQuery):

          var c = $('.g-recaptcha').length;
          for (var i = 0; i < c; i++)
              grecaptcha.reset(i);

      【讨论】:

      • 只要投入我的两分钱,如果以任何方式删除现有的 ReCaptchas 之一(例如,如果通过 Ajax 发布表单并从 DOM 中删除),那么这个解决方案就会失效,因为似乎验证码以某种方式记住了他们的 ID。因此,我存储了初始的 g-recaptcha 长度,并在需要重置验证码时始终迭代该长度。请记住,如果您传递以前存在的 ID,则不会引发错误。
      【解决方案4】:

      根据此处的谷歌文档。 https://developers.google.com/recaptcha/docs/display#js_param
      您应该能够将验证码 ID 传递给 reset 方法。
      grecaptcha.reset(widgetId);

      那么你可以这样做:

      grecaptcha.reset("recaptcha1"); grecaptcha.reset("recaptcha2");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-14
        • 2017-07-24
        • 1970-01-01
        • 2018-04-11
        • 1970-01-01
        • 2022-01-19
        • 2020-04-25
        相关资源
        最近更新 更多