2017-11-10 14 views
1

こんにちは。私はreCaptchaにリンクされている目に見えないボタンのクリックをシミュレートするためにJQueryを使用しています。複数のボタンをreCaptchaに接続する必要があり、各ページには1つのreCaptchaしか存在できません。そこで、どのボタンが押されたかを検出するコールバック関数を作成しました。ここで私がやった方法である:Captcha/JQuery - クリックシミュレーションは一度しか動作しません

HTML:

<div class="invisible"> 
    <button class="g-recaptcha" 
    data-sitekey="..." 
    data-callback="captcha_callback" 
    data-badge="inline" 
    data-type="image" 
    id="btn_captcha"></button> 
</div> 

Clickイベント+クリックシミュレーション:

$("#review_send").on("click", function() { 
    alert("HI"); 
    $("#btn_captcha").data("button-pressed", "review"); 
    $("#btn_captcha").click(); 
    $("#btn_captcha").blur(); 
}); 

reCAPTCHAのコールバック:

var captcha_callback = function(response) { 
    if($("#btn_captcha").data("button-pressed") === "mail") { 
    alert($("#btn_captcha").data("button-pressed")); 
    send_contact_mail(response); 
    } else if($("#btn_captcha").data("button-pressed") === "review") { 
    alert($("#btn_captcha").data("button-pressed")); 
    send_review(response); 
    } 
}; 

はどうなりますか。最初に#review_sendをクリックするとすべて動作します:最初に "HI"とそれから "review"を警告します。しかし、#review_sendを2回押すと、ただ単に "HI"でアラートが表示されます。

私はしばらく待ってからクリックが再び機能することを発見しました。

は関連この何かのjQuery/Javascriptをされており、それにreCAPTCHAのとは何かを持っているかのreCAPTCHAをタイムアウトを持っていますか?

ありがとうございます!私はあなたが同じページ上に複数のreCAPTCHAを持つことができないと思ったので

答えて

1

スヨンは、私はこの回避策を作りました。しかし、私はそれらの複数を持つ方法があることを知った。

あなたは(両方のJavaScriptを使用して)reCAPTCHAののをレンダリングし、それらをリセットすることができます。

var widget1 = grecaptcha.render("divID", { 
    siteKey: "...", 
    type; 'image', 
    callback: function(response) { 
     send_review(response); 
    } 
}); 

リセット:

grecaptcha.reset(widget1); 

は、私は私だけが正しいのdivでレンダリングするために押されたボタンをチェックする必要があり、および/正しいreCaptchaをリセットしてください。

+0

ニースは、解決策に取り組んでいたが、それを理解できなかった! – Nebulosar

関連する問題