Javascript reCAPTCHA和JS表单验证

Javascript reCAPTCHA和JS表单验证,javascript,php,html,recaptcha,Javascript,Php,Html,Recaptcha,我是GooglereCAPTCHA的新手,我正在尝试将其实现到现有表单验证中 这是我的原始代码: if(document.getElementById('naam').value.length == '' || document.getElementById('firma').value.length == '' || !filter_email.test(email.value)|| document.getElementById('bericht').value.length == '')

我是Google
reCAPTCHA
的新手,我正在尝试将其实现到现有表单验证中

这是我的原始代码:

if(document.getElementById('naam').value.length == '' || document.getElementById('firma').value.length == '' || !filter_email.test(email.value)|| document.getElementById('bericht').value.length == '') {
        document.getElementById('submit').disabled = true; }
    else {
        document.getElementById('submit').disabled = false; }
由于我是
reCAPTCHA
新手,我已经查阅了很多在线文档,但它们都描述了不同的实现

我希望简单地实现它,就像:

if(grecaptcha.getResponse() == "success" || document.getElementById('naam').value.length == '' || document.getElementById('firma').value.length == '' || !filter_email.test(email.value)|| document.getElementById('bericht').value.length == '') {
    document.getElementById('submit').disabled = true; }
else {
    document.getElementById('submit').disabled = false; }
但这似乎不起作用,如何在我现有的代码中正确实现这一点

编辑2 按照Ralph Melhem的建议使用不可见的reCAPTCHA时,我已将提交按钮更改为:

<input type="submit" name="submit" id="submit" value="Verstuur e-mail" class="g-recaptcha btn btn-info pull-right" data-sitekey="xxxx" data-callback="YourOnSubmitFn" disabled>
现场版本是

当我使用
data callback=“onSubmit”
时,我的控制台中出现此错误
Uncaught(in promise)null

如果我使用
data callback=“dataFallback”
我有一个错误
ReCAPTCHA找不到用户提供的函数:dataFallback

对于不可见的ReCAPTCHA,您可以如下设置表单按钮:

<button class="g-recaptcha btn btn-primary standard-button2 ladda-button" data-sitekey="YOURSITEKEY" data-callback="dataFallback"  data-size="invisible" type="submit" id="submit" name="submit" data-style="expand-left">Send Message</button>
发送消息
并包括脚本

<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
   function onSubmit(token) {
     document.getElementById("YOURFORMNAME").submit();
   }
 </script>

提交函数(令牌){
document.getElementById(“YOURFORMNAME”).submit();
}
这将处理您试图实现的验证。
如果您仍然想按自己的方式进行,我可以帮助您清理,但我相信上述方法对您的代码来说是最无创的

您使用的是哪个版本的google reCAPTCHA?我使用的是reCAPTCHA v2为什么不使用隐形reCAPTCHA?这是最简单的实现,并且不需要与usersOk交互,这似乎是公平的。我已经生成了一个新代码,但是我可以添加我现有的验证吗?小心,从问题中删除你的sitekey。禁用它并为生产创建一个新的on,因为这一个现在已被污染:)至于错误,在您的输入字段中,您有data callback=“YourOnSubmitFn”将其替换为data callback=“dataFallback”或data callback='onSubmit',并且您应该对我没有得到的更改感到满意,即错误
未捕获(承诺中)null
您是否在线提供此信息,以便我们可以访问它并查看发生了什么情况?是的,您可以:torza.nl/test.php在上面的脚本中,您需要用表单上的名称标记替换“YOURFORMNAME”。我可以在你的代码中看到你没有,所以添加它,它就会工作。()然后脚本应该是:document.getElementById(“iLovePHP”).submit();
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<script>
   function onSubmit(token) {
     document.getElementById("YOURFORMNAME").submit();
   }
 </script>