你好伙伴堆栈溢出。我正在使用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是否有超时?
提前致谢!
答案 0 :(得分:1)
Soo,我做了这个解决方法,因为我认为你不能在同一页面上进行多次重访。但是,我发现有一种方法可以有多种方法。
您可以渲染reCaptcha并重置它们(两者都使用javascript):
var widget1 = grecaptcha.render("divID", {
siteKey: "...",
type: 'image',
callback: function(response) {
send_review(response);
}
});
复位:
grecaptcha.reset(widget1);
我只需要检查我按下哪个按钮在正确的div中渲染和/或重置正确的reCaptcha。