1

我正面临一个关于 Invisible recaptcha 的奇怪问题。2 分钟后,当 Recaptcha 过期时,它的抛出脚本错误“找不到对象”。甚至尝试使用 WidgetID 但显示相同的行为。唯一的区别是我在 Recaptcha 提交和我的表单提交之间有一个额外的步骤。在按钮上成功重新验证提交后,单击页面上的弹出 div 打开,最终提交发生在单击弹出 div 提交按钮时。所有提交过程都正常工作,但是当验证码过期时,如果表单在弹出的 div 上闲置超过 2 分钟,则会引发错误。下面是代码片段:

    <div>
      <div>
      ...................
          <div class="form__group">
          <label class="text captcha"></label>
          <div class="g-recaptcha" data-badge="inline" data-sitekey="{$CaptchaWebsiteKey}" data-size="invisible" data-expired-callback="validateExpire" data-callback="onSubmit"></div>
          </div>
          <div class="form__group">
              <input id="btnPopUp" type="submit" class="btn btn--primary btn--full btn--xs-full" value="Submit your details"/>
          </div>
        </div>
    </div>
    <div id="modal" style="visibility:hidden;" class="modal">
              <div class="modal-content">
                <div class="modal-space">
                  ...................
                  <div class="modal-space1">
                    <input type="submit" id="btnSubmit" value="Submit" class="modal-btn modal-space2 btn btn--primary btn--xs-full" disabled="true"/>
                    <input type="submit" value="Cancel" onclick="return closePopup();" class="modal-btn modal-space2 btn btn--primary btn--xs-full" />
                  </div>
                </div>

              </div>

            </div>
            <div class="overlay"></div>

<script language="javascript" type="text/javascript">
        onload();

        function onload() {
          var element = document.getElementById('btnPopUp');
          element.onclick = validate;
        }

        var captchaResponse='';
        function onSubmit(response){
        captchaResponse = response;
            openPopup();
        } 

        function validateExpire() {
            grecaptcha.reset();
            captchaResponse='';
        }
 </script>

任何人都可以帮助解决这个问题吗?提前致谢。

4

0 回答 0