Captcha / JQuery - 点击模拟仅适用一次

时间:2017-11-10 11:49:35

标签: javascript jquery recaptcha captcha

你好伙伴堆栈溢出。我正在使用JQuery来模拟与reCaptcha链接的隐形按钮的单击。需要将多个按钮附加到reCaptcha,每个页面只能有一个reCaptcha。所以,我创建了一个回调函数来检测按下了哪个按钮。我是这样做的:

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>

点击事件+点击模拟:

$("#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_send时,我只收到“HI”警报。

我发现等待一段时间后点击再次发挥作用。

这与JQuery / Javascript有关,是否与reCaptcha有关或者reCaptcha是否有超时?

提前致谢!

1 个答案:

答案 0 :(得分:1)

Soo,我做了这个解决方法,因为我认为你不能在同一页面上进行多次重访。但是,我发现有一种方法可以有多种方法。

您可以渲染reCaptcha并重置它们(两者都使用javascript):

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

复位:

grecaptcha.reset(widget1);

我只需要检查我按下哪个按钮在正确的div中渲染和/或重置正确的reCaptcha。