【发布时间】:2015-07-14 08:44:46
【问题描述】:
当我通过 AJAX 提交表单并出现一些输入错误或发送表单时,我想重置 Google reCaptcha 小部件。我在同一页面上使用了多个小部件,因此我明确呈现这些小部件。
我的 HTML 代码:
<div class="g-recaptcha" id="recaptcha-1"></div>
<div class="g-recaptcha" id="recaptcha-2"></div>
...
<div class="g-recaptcha" id="recaptcha-20"></div>
加载小部件
<script src="https://www.google.com/recaptcha/api.js?onload=reCaptchaCallback&render=explicit&hl=en" async defer></script>
<script>
var reCaptchaCallback = function() {
var elements = document.getElementsByClassName('g-recaptcha');
for (var i = 0; i < elements.length; i++) {
var id = elements[i].getAttribute('id');
grecaptcha.render(id, {
'sitekey' : 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
});
}
};
</script>
提交表单后:
var id = $('.g-recaptcha', form).attr('id');
grecaptcha.reset(id);
Form是提交表单的实例。
正确填写表格后一切正常。但 reCaptcha 不会重置或重新加载。
它尝试了这个grecaptcha.reset(),但没有结果。
有什么想法吗?
【问题讨论】:
-
会报错吗?
-
不幸的是没有:(。我没有错误。看起来它重新加载了整个
recaptcha.js文件。
标签: javascript ajax reload reset recaptcha