将表单captcha重置延迟到submit()执行之后
Deferring form captcha reset until after submit() has executed
我在表单上使用谷歌的reCAPTCHA,每次提交后我都需要重置它,因为如果服务器端验证失败,用户重新提交相同的表单,captcha将无效。我使用的是纯javascript,而不是使用ajax/jquery,表单会打开一个新页面(而不是重新加载当前页面(。这是我的代码:
document.getElementById('myform').addEventListener('submit', function(event) {
event.preventDefault();
this.submit();
setTimeout(function(){ grecaptcha.reset(myCaptcha); }, 0);
}
我使用setTimeout
将重置代码放入事件循环队列中。
我的问题是,这种方法每次都有效吗?submit()
是否同步,即它总是在事件循环队列中的任何内容之前执行
是!请参阅此处:
JavaScript始终是同步的和单线程的。如果您在页面上执行JavaScript代码块,则当前不会执行该页面上的其他JavaScript。
因此,这个.submit((将在setTime((开始执行之前运行完成。
相关文章:
- 无法在通过jQuery的ajax加载的页面中执行javascript
- JavaScript执行暂时挂起页面
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 当js函数's已执行
- 哪个先执行
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- HTML表单提交时未执行外部函数
- 在Safari执行javascript之前对其进行修改
- Amd,希望确保某个东西总是最后执行
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- onsubmit返回false,但submit仍然执行
- 使用JavaScript onclick-submit执行PHP
- 在表单块上执行submit()
- 如果未完成event.prventDefault(),则在('submit')中未执行console.l
- 当按下Submit时,Form不会执行任何操作
- Javascript form.submit()失败并停止执行其余的Javascript代码
- 如何在jQuery submit()执行之前运行代码?
- 检测通过JavaScript执行的form.submit()
- 将表单captcha重置延迟到submit()执行之后
- 在所有form.submit()之前执行一个函数