How to check in js that user has checked the checkbox in Google recaptcha?

后端 未结 5 1952
清酒与你
清酒与你 2020-12-02 07:33

I have added the following before end of head


I have added th

相关标签:
5条回答
  • 2020-12-02 07:34

    Google has a call back option for when the checkbox is checked.

    Add this to your form element:

    data-callback="XXX"
    

    Example:

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

    And a disable attribute to your submit button.

    Example:

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

    Then a create a callback function and write whatever code you need.

    Example:

    function recaptchaCallback() {
        $('#submitBtn').removeAttr('disabled');
    };
    
    0 讨论(0)
  • 2020-12-02 07:36

    To check if google recaptcha is checked or not you can do it by the following code :

    <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>
    
    0 讨论(0)
  • 2020-12-02 07:45

    To check if google recaptcha v2 is checked or not you can do it by the following code :

    var checkCaptch = false;
         var verifyCallback = function(response) {
            if (response == "") {
                 checkCaptch = false;
             }
             else {
                 checkCaptch = true;
             }
         };
         $(document).ready(function() {
             $("#btnSubmit").click(function() {
                 if (checkCaptch && grecaptcha.getResponse()!="") {
                      //Write your success code here
                 }
             });
         })
    
    0 讨论(0)
  • 2020-12-02 07:48

    You can also call the grecaptcha object to check. grecaptcha.getResponse(); is empty when unchecked and has the verification code when checked.

    grecaptcha.getResponse().length === 0 when unchecked

    function isCaptchaChecked() {
      return grecaptcha && grecaptcha.getResponse().length !== 0;
    }
    
    if (isCaptchaChecked()) {
      // ...
    }
    
    0 讨论(0)
  • 2020-12-02 07:48

    Let the browser do the job for you! (based on slinky2000 answer)

    note: this is only to prevent sending an 'accidentally' unchecked recaptcha. You still have to verify the recaptcha on server side because a bot does not care ...

    Add a an invisible input tag with required=true attribute just below the div.g-recaptcha.

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

    Enclose both width a div with position=relative; to point the bottom:0; above to the bottom of recaptcha.

    Now the Browser asks nicely to fill out this field - pointing to the recapcha.

    Now we need the callback:

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

    and

    function recaptchaCallback() { 
        $('#recaptcha_check_empty').val(1);
    }
    
    0 讨论(0)
提交回复
热议问题