Ho avuto lo stesso problema come la tua e risolto in questo modo:
prima dichiarare un variabile che memorizza 1
o 0
a seconda che l'utente abbia riempito correttamente il capcha.
var allowSubmit = false;
allora avete bisogno di una funzione che viene eseguita quando l'utente compila correttamente il reCapcha:
function capcha_filled() {
allowSubmit = true;
}
... e una funzione che viene eseguita quando la sessione scade reCapcha:
function capcha_expired() {
allowSubmit = false;
}
Per comunicare a reCapcha le tue funzioni (callback), imposta gli attributi data-
nel tuo codice html:
<div class="g-recaptcha"
data-callback="capcha_filled"
data-expired-callback="capcha_expired"
data-sitekey="your site key"></div>
Oppure, se si utilizza il carico esplicito:
var onloadCallback = function() {
grecaptcha.render('your_div_id', {
'sitekey' : 'your_site_key',
'callback': capcha_filled,
'expired-callback': capcha_expired,
});
};
è necessario anche un callback per l'invio del modulo:
function check_if_capcha_is_filled (e) {
if(allowSubmit) return true;
e.preventDefault();
alert('Fill in the capcha!');
}
Infine aggiungere nella forma l'attributo onsubmit
:
<form action="..." onsubmit="check_if_capcha_is_filled">
Nota: come indicato nei commenti, è necessaria una convalida del server . Il codice impedisce l'invio accidentale del modulo a meno che il capcha non sia compilato e è solo per comodità dell'utente.
Prova questo link - http://formvalidation.io/examples/validating-google-recaptcha/ – gpullen
Scusa gpullen ma voglio reCAPTCHA come campo richiesto nel modulo . –
Prova questo link - [Come chiedere] (http://stackoverflow.com/help/how-to-ask). –