Comment vérifier en js que l'utilisateur a coché la case dans Google recaptcha?
j'ai ajouté ce qui suit avant la fin de la tête
<script src='https://www.google.com/recaptcha/api.js'></script>
j'ai ajouté ceci avant la fin du formulaire
<div class="g-recaptcha" data-sitekey="== xxxxxx =="></div>
je peux voir la recaptcha semblable à https://developers.google.com/recaptcha/
cependant, lorsque l'utilisateur appuie sur les données sans cocher la case, les données sont soumises. Y a-t-il un autre code que je dois ajouter pour vérifier si l'Utilisateur a appuyé sur la case à cocher? Avec un peu de chance à js?
5 réponses
Google a une option de rappel lorsque la case est cochée.
Ajouter ceci à votre élément de formulaire:
data-callback="XXX"
Exemple:
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="== xxxxxx =="></div>
et un attribut désactivé à votre bouton Soumettre.
Exemple:
<button id="submitBtn" disabled>Submit</button>
puis créer une fonction de rappel et écrire le code dont vous avez besoin.
Exemple:
function recaptchaCallback() {
$('#submitBtn').removeAttr('disabled');
};
vous pouvez aussi appeler l'objet grecaptcha pour vérifier. grecaptcha.getResponse();
est vide lorsqu'il n'est pas vérifié et a le code de vérification lorsqu'il est vérifié.
grecaptcha.getResponse().length === 0
quand non vérifié
function isCaptchaChecked() {
return grecaptcha && grecaptcha.getResponse().length !== 0;
}
if (isCaptchaChecked()) {
// ...
}
Pour vérifier si google recaptcha est cochée ou pas, vous pouvez le faire par le code suivant :
<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>
laissez le navigateur faire le travail pour vous! (basé sur la réponse de slinky2000)
remarque: ceci est seulement pour empêcher l'envoi d'une recaptcha' accidentellement ' non contrôlée. vous devez encore vérifier la recaptcha côté serveur parce qu'un bot n'a pas de soins ...
ajouter une balise de saisie invisible avec required=true
attribut juste au-dessous du 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;'>
joindre les deux largeurs a div
position=relative;
pointer le bottom:0;
au-dessus vers le bas de recaptcha.
Maintenant, le Navigateur demande gentiment de remplir ce champ pointant vers le recapcha.
Maintenant, nous avons besoin de la fonction de rappel:
<div class="g-recaptcha" data-callback="recaptchaCallback" ...
et
function recaptchaCallback() {
$('#recaptcha_check_empty').val(1);
}
Pour vérifier si google recaptcha v2 est cochée ou pas, vous pouvez le faire par le code suivant :
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
}
});
})