如何在js中检查用户是否已经选中Google recaptcha中的checkbox?

我在头尾添加了以下内容

<script src='https://www.google.com/recaptcha/api.js'></script> 

我在表单结束前添加了这个

 <div class="g-recaptcha" data-sitekey="== xxxxxx =="></div> 

我可以看到类似于https://developers.google.com/recaptcha/的recaptcha

HOwever,当用户按下数据而不勾选checkbox时,数据被提交。 是否有任何其他代码,我需要添加来检查用户是否已按下checkbox? 希望在JS?

谷歌有一个callback选项,当checkbox被选中。

将此添加到您的表单元素:

 data-callback="XXX" 

例:

 <div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="== xxxxxx =="></div> 

并提交一个禁用属性提交button。

例:

 <button id="submitBtn" disabled>Submit</button> 

然后创build一个callback函数,并写任何你需要的代码。

例:

 function recaptchaCallback() { $('#submitBtn').removeAttr('disabled'); }; 

您也可以调用grecaptcha对象来检查。 grecaptcha.getResponse(); 在未选中时为空,并且在检查时具有validation码。

grecaptcha.getResponse().length === 0未选中时为grecaptcha.getResponse().length === 0

 function isCaptchaChecked() { return grecaptcha && grecaptcha.getResponse().length !== 0; } if (isCaptchaChecked()) { // ... } 

让浏览器为您做好工作! (基于slinky2000的答案)

注意:这只是为了防止发送“意外”未经检查的recaptcha。 你仍然必须validation服务器端的recaptcha,因为一个机器人不关心…

div.g-recaptcha下方添加一个带有required=true属性的不可见input标签。

 <input id='recaptcha_check_empty' required tabindex='-1', style='width:50px; height:0; opacity:0; pointer-events:none; position:absolute; bottom:0;'> 

position=relative;宽度和divdiv起来position=relative; 指向bottom:0; 在recaptcha的底部以上。

现在浏览器很好地填写这个字段 – 指向recapcha。

现在我们需要callback:

 <div class="g-recaptcha" data-callback="recaptchaCallback" ... 

 function recaptchaCallback() { $('#recaptcha_check_empty').val(1); } 

要检查是否检查谷歌recaptcha您可以通过以下代码:

 <script> if(grecaptcha && grecaptcha.getResponse().length > 0) { //the recaptcha is checked // Do what you want here alert('Well, recaptcha is checked !'); } else { //The recaptcha is not cheched //You can display an error message here alert('Oops, you have to check the recaptcha !'); } </script>