0
我有一个recaptcha和注册表单。这里有一个处理程序的简单版本:如何确保重新验证码js文件在提交表单之前已被加载?
//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>
有时候,我不得不两次单击提交按钮。 我相信这是由于我点击按钮时“recaptcha/api.js”还没有加载。 正如我所看到的,当它被加载时,一切运行良好。
我该如何解决这个问题?
但我有**文件.getElementById(“my_form”)。onsubmit ** – Akira
最初我应该禁用提交按钮吗?然后启用它? – Akira
@Akira正确。你也可以添加一个标志,因为尽管你给按钮添加了一个'disabled'属性,它仍然会抛出'click'事件,所以在你的'onsubmit'中你应该检查那个布尔值,告诉它captcha是否被加载或者不能继续你的逻辑。例如,创建一个'captchaLoaded'变量,并在验证码加载时将其设置为'true'。这只是一个polyfill,因为几乎所有的浏览器都会禁用被禁用元素上的'click'事件,但似乎并不是标准的事情,所以也许有一个浏览器仍然会将它抛出禁用的元素。 –