Javascript 将表单验证码重置延迟到执行submit()之后
我在表单上使用Google的reCAPTCHA,每次提交后我都需要重置它,因为如果服务器端验证失败,用户重新提交同一表单,验证码将无效。我使用的是纯javascript,而不是ajax/jquery,表单会打开一个新页面(而不是重新加载当前页面)。这是我的密码:Javascript 将表单验证码重置延迟到执行submit()之后,javascript,forms,Javascript,Forms,我在表单上使用Google的reCAPTCHA,每次提交后我都需要重置它,因为如果服务器端验证失败,用户重新提交同一表单,验证码将无效。我使用的是纯javascript,而不是ajax/jquery,表单会打开一个新页面(而不是重新加载当前页面)。这是我的密码: document.getElementById('myform').addEventListener('submit', function(event) { event.preventDefault(); this.su
document.getElementById('myform').addEventListener('submit', function(event) {
event.preventDefault();
this.submit();
setTimeout(function(){ grecaptcha.reset(myCaptcha); }, 0);
}
我正在使用setTimeout
将重置代码放入事件循环队列中
我的问题是,这种方法每次都有效吗?是同步的,即它总是在事件循环队列中的任何内容之前执行?是!见:
JavaScript始终是同步的和单线程的。如果在页面上执行JavaScript代码块,则当前不会执行该页面上的其他JavaScript
因此,这个.submit()将在setTime()开始执行之前运行到完成。是!见:
JavaScript始终是同步的和单线程的。如果在页面上执行JavaScript代码块,则当前不会执行该页面上的其他JavaScript
因此,这个.submit()将在setTime()开始执行之前运行到完成