如何在提交表单之前确保已经加载了重新验证码js文件?

时间:2017-09-15 09:17:11

标签: javascript html recaptcha

我有一个recaptcha和一个注册表。这是处理程序的简单版本:

  //my_script.js

  document.getElementById("my_form").onsubmit = function(e) {
    e.preventDefault();
    grecaptcha.execute();
    var grecap_resp = grecaptcha.getResponse();
    if (grecap_resp.length !== 0) {

和js文件:

<script src="my_script.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>

有时我必须两次点击提交按钮。 我相信这是因为&#34; recaptcha / api.js&#34;当我点击按钮时,还没有加载。 正如我所看到的,当它被加载时,一切都运行良好。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

作为the docs say,您可以传递一个onload参数,该参数具有在加载时将被调用的函数名称:

<script src="my_script.js"></script>
<script src="https://www.google.com/recaptcha/api.js?onload=recaptchaLoaded&render=explicit" async defer></script>

my_script.js

window.recaptchaLoaded = function() { // "window..." so is defined on the global scope
    console.log("Yay! captcha loaded"); // Here you should add your logic to show/enable the button that is disabled/hidden by default.
}