J'ai une recaptcha et un formulaire d'inscription. Voici une version simple d'un gestionnaire:Comment vous assurer que le fichier re-captcha js a été chargé avant de soumettre un formulaire?
//my_script.js
document.getElementById("my_form").onsubmit = function(e) {
e.preventDefault();
grecaptcha.execute();
var grecap_resp = grecaptcha.getResponse();
if (grecap_resp.length !== 0) {
Et les fichiers js:
<script src="my_script.js"></script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
Parfois, je dois cliquer deux fois sur le bouton Envoyer. Je crois que c'est dû au fait que "recaptcha/api.js" n'a pas encore été chargé quand je clique sur le bouton. Comme je peux le voir, quand il a été chargé, tout fonctionne bien.
Comment puis-je résoudre ce problème?
mais je ** le document .getElementById ("my_form"). onsubmit ** – Akira
devrais-je désactiver le bouton d'envoi initialement? puis l'activer? – Akira
@Akira Exactement. Vous pouvez également ajouter un drapeau, car bien que vous ajoutiez un attribut 'disabled' à un bouton, il lance toujours des événements' click', donc à l'intérieur de votre 'onsubmit' vous devriez vérifier si ce booléen indique si le captcha a été chargé ou non votre logique. Créez simplement une variable 'captchaLoaded' et réglez la sur' true' quand le captcha se charge, par exemple. C'est juste un polyfill car presque tous les navigateurs désactivent les événements click sur les éléments désactivés, mais cela ne semble pas standard, alors peut-être y a-t-il un navigateur qui le jette encore sur les éléments désactivés. –