提交后继续javascript传播

时间:2018-10-29 13:56:44

标签: javascript jquery

我有一个Rails应用程序,正在使用Recaptcha gem(https://github.com/ambethia/recaptcha)。

我想添加一个带有data-disable-with的不可见的Recaptcha,但这不起作用。当我单击按钮时,我可以看到“已禁用”属性,但是没有出现“请稍候...”数据,并且该按钮也未被禁用。

这是我的代码:

= invisible_recaptcha_tags text: "Sign up", class: 'btn btn-primary', 'data-disable-with' => 'Please wait...'

谁生成此HTML:

<button type="submit" data-sitekey="mykey" data-callback="invisibleRecaptchaSubmit" class="g-recaptcha btn btn-primary" data-disable-with="Please wait...">Sign up</button>

我搜索了原因,并在gem中发现了以下代码:

<script#{nonce_attr}>
  var invisibleRecaptchaSubmit = function () {
    var closestForm = function (ele) {
      var curEle = ele.parentNode;
      while (curEle.nodeName !== 'FORM' && curEle.nodeName !== 'BODY'){
        curEle = curEle.parentNode;
      }
      return curEle.nodeName === 'FORM' ? curEle : null
    };
    var eles = document.getElementsByClassName('g-recaptcha');
    if (eles.length > 0) {
      var form = closestForm(eles[0]);
      if (form) {
        form.submit();
      }
    }
  };
</script>

在此文件中:https://github.com/ambethia/recaptcha/blob/master/lib/recaptcha/client_helper.rb

我认为data-disable-with不起作用,因为form.submit();停止了javascript的传播,因此在提交后禁用按钮的jQuery函数不起作用...

我不知道该如何解决此问题。你可以帮帮我吗?

0 个答案:

没有答案