ReCaptcha 2.0:如果重新成功,则在回调时启用"提交"按钮

tha*_*nce 60 javascript php jquery captcha recaptcha

我有一个非常简单的表格如下.我想这样做是为了禁止提交按钮,并且仅用户成功完成ReCaptcha 启用.

我假设我需要一些Javascript/jQuery才能做到这一点.

谷歌关于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>
Run Code Online (Sandbox Code Playgroud)

小智 117

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

你必须添加属性data-callback="enableBtn"data-callback属性执行recaptcha完成后指定的函数.

<div class="g-recaptcha" data-sitekey="############-#####" data-callback="enableBtn"></div>
Run Code Online (Sandbox Code Playgroud)

并将按钮的ID设置为您想要的任何ID:

<input type="button" value="Submit" id="button1">
Run Code Online (Sandbox Code Playgroud)

在页面加载/表单加载禁用按钮

 document.getElementById("button1").disabled = true;
Run Code Online (Sandbox Code Playgroud)

然后在javascript上创建一个启用按钮的功能

 function enableBtn(){
    document.getElementById("button1").disabled = false;
   }
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.

  • 还应该设置一个`data-expired-callback`属性,如果用户等待太长时间并且验证码检查到期,则可以再次禁用该按钮.https://developers.google.com/recaptcha/docs/display (11认同)
  • @panda.o24真有帮助,这对我有用.有点困惑.调用回调时,验证码是否已经完全验证?如果是这样,您在注册时获得的密钥的目的是什么?我假设在回调Javascript的某个地方有必要向Google调用Ajax吗?我弄错了吗? (4认同)
  • 小更正(删除函数名称后面的括号): `&lt;div class="g-recaptcha" data-sitekey="############-######" data-callback= “启用Btn”&gt;&lt;/div&gt;` (2认同)
  • 你的意思是`var enableBtn = function(){` (2认同)
  • 如果有人通过浏览器开发工具启用该按钮怎么办 (2认同)