2015-05-03 30 views
22

Mam bardzo prosty formularz w następujący sposób. Chcę, aby przycisk Wyślij był wyłączony i włączony tylko po użytkownik pomyślnie ukończył ReCaptcha.ReCaptcha 2.0: włącz przycisk Prześlij na oddzwonienie, jeśli recaptcha się powiodło

Zakładam, że potrzebuję trochę Javascript/jQuery, aby to zrobić.

Dokumentacja Google na temat ReCaptcha 2.0 wydaje się być naprawdę skąpa i gęsta (w każdym razie). Byłbym wdzięczny za kilka wskazówek:

<form action="something.php" method="post"> 
    Name: <input type="text" size="40" name="name"><br><br> 
    <div class="g-recaptcha" data-sitekey="############-#####"></div> 
    <input type="submit" value="Submit" > 
</form> 
+0

Zakładając, że captcha jest ostatnią rzeczą przed przyciskiem przesyłania, po prostu wprowadzisz opóźnienie dla odwiedzających. A co jeśli javascript jest wyłączony? – jeroen

+1

@jeroen Ludzie z wyłączonymi javascriptami są skrajnym przypadkiem, który jestem gotów zrezygnować, aby uniknąć spam-botów. –

+1

Czy metoda jest rzeczywiście bezpieczna? Czy bot spamowy nadal może przesłać formularz bez żadnego przycisku przesyłania? –

Odpowiedz

60

Zrobiłem to samo na mojej stronie testowej. jednak użyłem przycisku zamiast przesłać, więc tutaj:

musisz dodać właściwość data-callback="enableBtn" właściwość data-wywołanie wykonuje funkcję określoną po wykonaniu recaptcha.

<div class="g-recaptcha" data-sitekey="############-#####" data-callback="enableBtn"></div> 

i ustawić ID przycisk, aby cokolwiek id chcesz:

<input type="button" value="Submit" id="button1"> 

na stronie obciążenia/obciążenia formie wyłączyć przycisk

document.getElementById("button1").disabled = true; 

następnie javascript zrobić funkcja włączania przycisku: mam nadzieję, że to pomaga.

+1

Drobna korekta (usuń nawiasy po nazwie funkcji): '

' – Caedmon

+1

@Cededmon Poprawiono .. dzięki za wzmiankę. –

+3

@ panda.o24 Naprawdę pomocny i to działa dla mnie. Nieco zdezorientowany. Czy captcha jest już w pełni zweryfikowany, gdy wywołanie jest wywoływane? Jeśli tak, jaki jest cel tajnego klucza, który otrzymujesz przy rejestracji? Zakładałem, że gdzieś w callback'u JavaScript będzie konieczne połączenie z Ajaxem do Google'a? Czy mam to źle? – ifinlay