【问题标题】:ReCaptcha 2.0: enable Submit button on callback if recaptcha successfulReCaptcha 2.0:如果 recaptcha 成功,则启用回调上的提交按钮
【发布时间】:2015-05-03 19:12:28
【问题描述】:

我有一个非常简单的表格,如下所示。我想让提交按钮被禁用,并且只有在用户成功完成 ReCaptcha 之后才启用

我假设我需要一些 Javascript / jQuery 来执行此操作。

Google 关于 ReCaptcha 2.0 的文档似乎非常稀疏和密集(无论如何,对我来说)。我会很感激一些指示:

<form action="something.php" method="post">
    Name: <input type="text" size="40" name="name"><br><br>
    <div class="g-recaptcha" data-sitekey="############-#####"></div>
    <input type="submit" value="Submit" >
</form>

【问题讨论】:

  • 假设验证码是提交按钮之前的最后一件事,您只会为访问者引入延迟。如果 javascript 被禁用怎么办?
  • @jeroen 禁用 javascript 的人是我愿意放弃的极端情况,以避免垃圾邮件机器人。
  • 方法真的安全吗?如果没有任何形式的提交按钮,垃圾邮件机器人就不能提交表单吗?
  • @user1883050,您没有将答案标记为正确。你搞定了吗?
  • 有人在现实世界中测试过吗?我认为机器人不需要提交按钮,他们使用表单 url 和输入字段和帖子......或者这只是不允许用户在不选中框的情况下提交表单的程序的一部分?

标签: javascript php jquery captcha recaptcha


【解决方案1】:

我在我的测试站点上做了同样的事情。但是,我使用了按钮而不是提交,所以在这里:

你必须添加属性data-callback="enableBtn"data-callback属性在recaptcha完成后执行指定的功能。

<div class="g-recaptcha" data-sitekey="############-#####" data-callback="enableBtn"></div>

并将按钮的 id 设置为您想要的任何 id 并将其设置为禁用:

<input type="button" value="Submit" id="button1" disabled="disabled">

然后在javascript上创建一个函数来启用按钮

 function enableBtn(){
   document.getElementById("button1").disabled = false;
 }

希望对你有帮助。

【讨论】:

  • 小修正(去掉函数名后面的括号):&lt;div class="g-recaptcha" data-sitekey="############-#####" data-callback="enableBtn"&gt;&lt;/div&gt;
  • @panda.o24 真的很有帮助,这对我有用。不过有点迷茫。调用回调时验证码是否已经完全验证?如果是这样,您在注册时获得的密钥的目的是什么?我假设在回调 Javascript 中的某个地方需要对 Google 进行 Ajax 调用?我是不是搞错了?
  • 你的意思是var enableBtn = function(){
  • 您还应该设置一个data-expired-callback 属性,如果用户等待太久并且验证码检查过期,该属性可以再次禁用该按钮。 developers.google.com/recaptcha/docs/display
  • 如果有人通过浏览器开发工具启用该按钮会怎样
猜你喜欢
  • 1970-01-01
  • 2020-04-20
  • 2015-11-17
  • 2016-02-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多