Error: ReCAPTCHA placeholder element must be empty

JavascriptJqueryRecaptchaLaravel 4.2

Javascript Problem Overview


I am using recaptcha with my laravel application.

I just want to check recaptcha's response on form submit using jquery and stop user by alert that pleade validate captcha.

but , I could not stop form submission even if captcha is not filled.

here is my code.

 $('#payuForm').on('submit', function (e) {

                    var response = grecaptcha.getResponse();

                    if(response.length == 0 ||  response == '' || response ===false ) {
                        alert('Please validate captcha.');
                        e.preventDefault();
                    }
                });



<div class="captcha">
 {{ View::make('recaptcha::display') }}
</div>

I am getting this error in browser console , and form gets submit.

Error: ReCAPTCHA placeholder element must be empty

Javascript Solutions


Solution 1 - Javascript

You are loading the google recaptcha library twice.

https://www.google.com/recaptcha/api.js

Solution 2 - Javascript

You are loading the library 2 times

chose

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script>
				  

or

     <script src="https://www.google.com/recaptcha/api.js" async defer></script>

Solution 3 - Javascript

I got this error when I tried to render reCaptcha on non empty element

<div class="g-recaptcha"  data-sitekey="{{ env('GOOGLE_RECAPTCHA_SITE_KEY') }}">
      <div class="form-group">some element inside reCaptcha container</div>
</div>

reCaptcha placeholder element must be empty

<div class="g-recaptcha"  data-sitekey="{{ env('GOOGLE_RECAPTCHA_SITE_KEY') }}"></div>

Solution 4 - Javascript

I am using ContactForm7 for Wordpress, which has a built-in integration with Recaptcha. I also have the BWP Recaptcha plugin, which uses the same recaptcha libraries. I had mistakenly added my activation keys to both, which was causing the js library to load twice. Once I removed the keys from the CF7 plugin the error went away.

Solution 5 - Javascript

WARNING: Tried to load angular more than once.

In AngularJs this error causes such problems You can check for jquery likewise.

Solution 6 - Javascript

Just youse this for each captcha at the page if you need dynamic including:

    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
            async defer>
    </script>

    <div class="g-recaptcha"></div>

    <script>
        var onloadCallback = function() {
            //remove old
            $('.g-recaptcha').html('');

            $('.g-recaptcha').each(function (i, captcha) {
                grecaptcha.render(captcha, {
                    'sitekey' : 'your key'
                });
            });
        };
    </script>

But it is slow. You can also define all recaptchas at page initially: https://developers.google.com/recaptcha/docs/display

Solution 7 - Javascript

This worked for me.

<script>
    var onloadCallback = function() {
        if (captcha.length ) {
            grecaptcha.render(captcha, {
                'sitekey' : 'your key'
            });
        }
    };
</script>

Solution 8 - Javascript

If you are using something like postscribe to load recaptcha asynchronous script, you must use one container (div) to inject script tag and another to make as target to instance reCAPTCHA, two divs.

Solution 9 - Javascript

In my case I was using a link as button :

<a class="g-recaptcha"  data-sitekey="...">Submit</a>

I fixed this by using Button element instead:

<button class="g-recaptcha"  data-sitekey="...">Submit</button>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNirali JoshiView Question on Stackoverflow
Solution 1 - JavascriptSyed Waqas BukharyView Answer on Stackoverflow
Solution 2 - JavascriptztvmarkView Answer on Stackoverflow
Solution 3 - Javascriptway2vinView Answer on Stackoverflow
Solution 4 - JavascriptGary DView Answer on Stackoverflow
Solution 5 - JavascriptMaazKhan47View Answer on Stackoverflow
Solution 6 - JavascriptДима ЛобурецView Answer on Stackoverflow
Solution 7 - JavascriptSiddhantView Answer on Stackoverflow
Solution 8 - JavascriptelaineeeView Answer on Stackoverflow
Solution 9 - JavascriptmgraphView Answer on Stackoverflow