如何在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;
宽度和div
都div
起来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>