J'ai plusieurs formulaires (formulaire de contact 7) dans une page et je dois réinitialiser le recaptcha après l'envoi du formulaire via ajax. J'ai vérifié l'API recaptcha et il a grecaptcha.reset();
mais il ne réinitialise que le premier recaptcha dans une page.
Voici la méthode pour cibler un recaptcha spécifique en fonction de l’API recaptcha:
grecaptcha.reset(
opt_widget_id
)
Le problème ici est que je ne peux pas mettre la main sur l'instance (opt_widget_id) de recaptcha car elle est créée par le formulaire de contact 7.
Comment obtenir opt_widget_id dans une page comportant plusieurs formulaires, afin de pouvoir réinitialiser un recaptcha spécifique.
Puisque recaptcha est créé par le formulaire de contact 7 sans affecter le recaptcha rendu à une variable, il n'a pas été possible d'utiliser grecaptcha.reset (opt_widget_id). Voici ce qui est fait:
$(".wpcf7-submit").click(function(event) {
var currentForm=$(this).closest("form");
$( document ).ajaxComplete(function(event,request, settings) {
var responseObj=JSON.parse(request.responseText);
if(responseObj.mailSent==true){
//reset recaptcha
var recaptchaIFrame=currentForm.find("iframe").eq(0);
var recaptchaIFrameSrc=recaptchaIFrame.attr("src");
recaptchaIFrame.attr("src",recaptchaIFrameSrc);
}
});
});
J'ai effacé la source d'iframe et réaffecté le même code src afin qu'il recharge le recaptcha une fois qu'il a été soumis.
J'espère que ça aidera quelqu'un !
Pour ce faire, j'ai ajouté le code ci-dessous dans "Paramètres supplémentaires" du formulaire de contact.
on_sent_ok: "grecaptcha.reset()"
J'espère que cela aide les autres