1つのページに複数のフォーム(連絡フォーム7)があり、フォームがajaxを介して送信された後に要約をリセットする必要があります。 recaptcha APIをチェックしたところ、grecaptcha.reset();
がありましたが、ページ内の最初のrecaptchaしかリセットされませんでした。
以下は、recaptcha APIに従って特定のrecaptchaをターゲットにする方法です。
grecaptcha.reset(
opt_widget_id
)
ここでの問題は、recaptchaのインスタンス(opt_widget_id)は連絡フォーム7で作成されているため、このインスタンスを取得できないことです。
特定の要約をリセットできるように、複数のフォームを持つページでopt_widget_idを取得する方法.
Recaptchaはレンダリングされたrecaptchaを変数に割り当てずにcontact form 7によって作成されるので、grecaptcha.reset(opt_widget_id)を使うことは不可能でした。これがされることはここにあります:
$(".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);
}
});
});
私はiframeのソースをクリアし、同じsrcを再割り当てしました。送信されたときにrecaptchaをリロードします。
これが誰かに役立つことを願っています!
連絡フォームの「追加設定」に以下のコードを追加してこれを行いました。
on_sent_ok: "grecaptcha.reset()"
これが他の人に役立つことを願っています