【发布时间】:2017-11-18 21:12:07
【问题描述】:
我正在尝试在 Wordpress 网站的 HTML 表单中实现 Google 的 Invisible reCAPTCHA。
在head
首先,我有设置回调并将表单的提交事件绑定到验证的脚本:
jQuery(document).ready(function() {
var valid = false;
window.recaptchaOkay = function(token) {
valid = true;
jQuery('#cadastro').submit();
};
document.getElementById('cadastro').addEventListener('submit', function validate(event) {
if (valid) {
return true;
}
var cap = document
.getElementById('cadastro')
.querySelector('.g-recaptcha');
grecaptcha.execute(cap);
event.preventDefault();
return false;
});
});
然后,我完全按照文档中的说明加载 reCAPTCHA 脚本:
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
在body
这是我正在使用的表格:
<form action="https://example.com/" method="post" id="cadastro">
<div
class="g-recaptcha"
data-sitekey="6Lc0jC4UAAAAANlXbqGWNlwyW_e1kEB89zLTfMer"
data-callback="recaptchaOkay"
data-size="invisible"
id="cadastro-captcha">
</div>
<button type="submit" id="cadastro-submit">Enviar</button>
</form>
会发生什么
我填了表格,提交了,抛出如下错误(与grecaptcha.execute一致):
Error: Invalid ReCAPTCHA client id: [object HTMLDivElement]
还尝试将cadastro-captcha ID 作为字符串直接传递给该函数(例如grecaptcha.execute("cadastro-captcha")),但会发生相同的错误(显然,ID 不同)。等效地,如果我不传递任何参数,则会发生相同的错误,除了它引用undefined。
【问题讨论】:
-
你试过打电话给
grecaptcha.execute()吗? (没有任何参数) -
@Black 是的。我只是得到同样的错误,
undefined作为客户端 ID。 -
目前您将整个 div 作为参数传递,这不是它应该的方式。您应该传递 div 的 id,或者什么都不传递(然后它将只使用创建的第一个小部件)。
-
@Black 我在问题中说过。仅传递 ID 也是如此。
标签: javascript wordpress recaptcha invisible-recaptcha