如何检查用户已在Google recaptcha中选中复选框的js?

Hel*_*rse 69 javascript checkbox jquery recaptcha

我在结束之前添加了以下内容

<script src='https://www.google.com/recaptcha/api.js'></script>
Run Code Online (Sandbox Code Playgroud)

我在表格结尾之前加了这个

<div class="g-recaptcha" data-sitekey="== xxxxxx =="></div>
Run Code Online (Sandbox Code Playgroud)

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

HOwever,当用户在不勾选复选框的情况下按下数据时,将提交数据.是否还需要添加其他代码来检查用户是否按下了复选框?希望在js?

sli*_*000 170

当选中复选框时,Google有一个回叫选项.

将其添加到表单元素:

data-callback="XXX"
Run Code Online (Sandbox Code Playgroud)

例:

<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="== xxxxxx =="></div>
Run Code Online (Sandbox Code Playgroud)

并且提交按钮的禁用属性.

例:

<button id="submitBtn" disabled>Submit</button>
Run Code Online (Sandbox Code Playgroud)

然后创建一个回调函数并编写您需要的任何代码.

例:

function recaptchaCallback() {
    $('#submitBtn').removeAttr('disabled');
};
Run Code Online (Sandbox Code Playgroud)

  • 如何解决超时问题?如果有人检查reCaptcha然后不提交表单几分钟,那么reCaptcha将过期但用户仍然能够提交表单..! (2认同)
  • @AkshayKapoor [data-expired-callback](https://developers.google.com/recaptcha/docs/display) (2认同)
  • 只需要在document.ready之外放置函数recaptchaCallback(),以便可以通过验证码控件访问它.否则,您将收到一个console.log错误,例如"ReCAPTCHA找不到用户提供的函数:". (2认同)

Ola*_*son 56

您也可以调用grecaptcha对象进行检查.grecaptcha.getResponse();取消选中时为空,并在选中时显示验证码.

grecaptcha.getResponse().length === 0 什么时候不加以控制

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

if (isCaptchaChecked()) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

  • `var isCaptchaChecked = (grecaptcha &amp;&amp; grecaptcha.getResponse().length !== 0);` (2认同)

MUS*_*SSI 6

要检查是否已选中google 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>
Run Code Online (Sandbox Code Playgroud)