Ich meine, keine Formularübermittlung, bis Recaptcha ausgefüllt ist?
Ich verwende ParsleyJs in meinem Formular, habe aber keinen Weg gefunden, damit es funktioniert divS…
Andere Lösungen haben bei mir nicht funktioniert … Dies hat funktioniert – https://stackoverflow.com/a/28676035/4836581
– Zwi Redler
8. Juli 18 um 11:45 Uhr
@ZviRedler Die im Link bereitgestellte Lösung deaktiviert oder aktiviert die Schaltfläche … sie lässt das Formular jedoch programmgesteuert senden oder wenn der Benutzer einfach F12 macht und die Schaltfläche “Senden” aktiviert …
– serhio
19. Februar 19 um 9:43 Uhr
colecmc
Sie müssen den Rückruf der reCaptcha-Verifizierungsantwort verwenden. Etwas wie das: <script src="https://www.google.com/recaptcha/api.js?onload=reCaptchaCallback&render=explicit"></script>
var RC2KEY = 'sitekey',
doSubmit = false;
function reCaptchaVerify(response) {
if (response === document.querySelector('.g-recaptcha-response').value) {
doSubmit = true;
}
}
function reCaptchaExpired () {
/* do something when it expires */
}
function reCaptchaCallback () {
/* this must be in the global scope for google to get access */
grecaptcha.render('id', {
'sitekey': RC2KEY,
'callback': reCaptchaVerify,
'expired-callback': reCaptchaExpired
});
}
document.forms['form-name'].addEventListener('submit',function(e){
if (doSubmit) {
/* submit form or do something else */
}
})
Anstatt “document.querySelector(‘.g-recaptcha-response’).value” zu verwenden, können Sie “grecaptcha.getResponse()” verwenden.
– kunde
14. Dezember 15 um 23:03 Uhr
Shahar Shokrani
Für PetersilieJS Sie werden eine kleine Problemumgehung durchführen:
1.Verstecktes Eingabefeld hinzufügen, mit data-parsley-required="true", value = ""so was:
botvalidator enthält den Google-Recaptcha-Iframe mit dem Kontrollkästchen “Ich bin kein Roboter”. Captcha-Fehler enthält Fehler, nachdem überprüft wurde, ob der Benutzer nicht auf das Kontrollkästchen „Ich bin kein Roboter“ geklickt hat.
WICHTIG: Wir verwenden die arrival.js-Bibliothek, um zu wissen, wann Google Recaptcha ein neues g-recaptcha-response-Textarea-Element im DOM hinzufügt, da frühere DOM-Validierungen zum Einfügen neuer Knoten nicht mehr gültig sind. Dieses Ereignis tritt auf, nachdem Recaptcha einige Minuten lang in die Seite geladen wurde.
Eine weitere wichtige Sache ist, sich daran zu erinnern, die Recaptcha-Bibliothek auf diese Weise geladen zu haben, um die onloadCallback-Funktion nach dem Laden von Recaptcha auszuführen und Recaptcha “manuell” zu rendern.
var onloadCallback = function() {
/**
* If we try to load page to show the congrats message we don't need to load recaptcha.
*/
if($("#botvalidator").length > 0) {
grecaptcha.render('botvalidator', {
'sitekey' : '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI',
'callback': cleanErrors
});
addCaptchaValidation();
/**
* We are going to use arrive library in order to check new google recaptcha
* element added after the current one is expired and then we will create new attributes for that element.
* Expires-callback google recaptcha is not working, probably it is executed before element creation.
* https://github.com/uzairfarooq/arrive/
*/
$(document).arrive("#g-recaptcha-response", function() {
// 'this' refers to the newly created element
addCaptchaValidation();
});
}
};
/** We are going to remove all errors from the container. */
var cleanErrors = function() {
$("#captchaerrors").empty();
};
var addCaptchaValidation = function() {
console.log("Adding captcha validation");
cleanErrors();
$('#myform').parsley().destroy();
$('#g-recaptcha-response').attr('required', true);
// We are going to create a new validator on Parsley
$('#g-recaptcha-response').attr('data-parsley-captcha-validation', true);
$('#g-recaptcha-response').attr('data-parsley-error-message', "We know it, but we need you to confirm you are not a robot. Thanks.");
$('#g-recaptcha-response').attr('data-parsley-errors-container', "#captchaerrors");
$('#myform').parsley();
};
/** We are going to add a new Parsley validator, this validation is called from
#g-recaptcha-response after clicking the submit button*/
window.Parsley.addValidator('captchaValidation', {
validateString: function(value) {
if(debug) console.log("Validating captcha", value);
if(value.length > 0) {
return true;
} else {
return false;
}
},
messages: {en: 'We know it, but we need you to confirm you are not a robot. Thanks.'}
});
<html>
<head>
</head>
<body>
<h1>Parsley and Google Recaptcha Example</h1>
<form id="myform">
Full name
<input type="text" name="name" id="name" data-parsley-required="true">
<br/>
<div id="botvalidator"></div>
<div id="captchaerrors"></div><br/>
<input type="submit" value="Submit Form">
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.8.2/parsley.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/arrive/2.4.1/arrive.min.js"></script>
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"></script>
</body>
</html>
Das war’s Leute.
.
7848400cookie-checkGoogle ReCAPTCHA wie erforderlich machen?yes
Andere Lösungen haben bei mir nicht funktioniert … Dies hat funktioniert – https://stackoverflow.com/a/28676035/4836581
– Zwi Redler
8. Juli 18 um 11:45 Uhr
@ZviRedler Die im Link bereitgestellte Lösung deaktiviert oder aktiviert die Schaltfläche … sie lässt das Formular jedoch programmgesteuert senden oder wenn der Benutzer einfach F12 macht und die Schaltfläche “Senden” aktiviert …
– serhio
19. Februar 19 um 9:43 Uhr