2016-05-04 20 views
47

मैं अपने लार्वा एप्लिकेशन के साथ रिकैप्चा का उपयोग कर रहा हूं।त्रुटि: ReCAPTCHA प्लेसहोल्डर तत्व खाली होना चाहिए

मैं सिर्फ jquery का उपयोग करके जमा पर रिकैप्चा की प्रतिक्रिया जांचना चाहता हूं और चेतावनी से उपयोगकर्ता को रोकना चाहता हूं कि अनुरोध कैप्चा को मान्य करता है।

लेकिन, मैं कैप्चा भरने के बावजूद फॉर्म जमा करने को रोक नहीं सका।

यहां मेरा कोड है।

$('#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> 

मुझे यह त्रुटि ब्राउज़र कंसोल में मिल रही है, और फॉर्म सबमिट हो जाता है।

Error: ReCAPTCHA placeholder element must be empty 
+0

क्या यह काम करता है: ' 'यदि नहीं, तो क्या आप स्क्रिप्ट को दो बार शामिल करते हैं दुर्घटना पर्च? –

उत्तर

116

आप Google रिकैप्चा लाइब्रेरी को दो बार लोड कर रहे हैं।

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

+0

मुझे यह वही समस्या है .. और जब मैं Google क्रोम कंसोल देखता हूं तो मुझे लगता है कि api.js एक बार लोड हो गया है, लेकिन recaptcha__es.js को तीन बार लोड किया गया है। यहां समस्या क्या हो सकती है? – jstuardo

+2

स्क्रिप्ट को दो बार लोड होने से कैसे रोकें? चूंकि यह डिफ़ॉल्ट रूप से लोड होता है जब '<% = recaptcha_tags%>' रूबी में प्रस्तुत किया जाता है। – Farhad

3

मैं Wordpress के लिए ContactForm7, जो उपयोग कर रहा हूँ एक अंतर्निहित रीकैप्चा के साथ एकीकरण। मेरे पास बीडब्ल्यूपी रिकैप्चा प्लगइन भी है, जो एक ही रिकैप्चा पुस्तकालयों का उपयोग करता है। मैंने गलती से दोनों को अपनी सक्रियण कुंजी जोड़ दी थी, जो जेएस लाइब्रेरी को दो बार लोड करने का कारण बना रहा था। एक बार जब मैंने सीएफ 7 प्लगइन से चाबियाँ हटा दी तो त्रुटि चली गई।

1
WARNING: Tried to load angular more than once. 

कोणीय में यह त्रुटि ऐसी समस्याओं का कारण बनती है आप इसी तरह jquery की जांच भी कर सकते हैं।

3

आप पुस्तकालय लोड कर रहे हैं 2 बार

चुना

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

या

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

बस पृष्ठ पर प्रत्येक कैप्चा के लिए इस youse अगर आप गतिशील सहित की जरूरत है:

<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> 

लेकिन यह धीमा है। आप प्रारंभ में पृष्ठ पर सभी रिकैप्चास को भी परिभाषित कर सकते हैं: https://developers.google.com/recaptcha/docs/display

-1

धीमी इंटरनेट कनेक्शन के कारण एक ही समस्या हो सकती है।

संबंधित मुद्दे