2016-10-02 73 views
1

我正在尝试将recaptcha集成到我的网站中,并且我想添加一些客户端验证。带回调的Rails reCAPTCHA

我选择使用a gem来包含recaptcha标签,但是我想要在检查完recaptcha后触发一个函数。

通过一些谷歌网站,发现一个data-callback属性与它的值设置为函数名是我所需要的。

我使用recaptcha_tags辅助程序从宝石来设置它,然后用jquery方法来添加这个data-callback属性,因为我没有在宝石内种子选项来执行此操作。

$('.g-recaptcha').attr("data-callback", "myFunctionName"); 

单击recaptcha后,函数不会被调用。为什么?

+0

你检查了你的javascript错误吗?确保myFunctionName在全局范围内可用。 –

+0

情况就是这样!这不在全球范围内! – Ancinek

回答

1

我asume你有一个表单如

应用程序/视图/联系人/ contact.html.erb

<%= form_for @contact do |f| %> 
    <%= f.text_field :nombre, :placeholder => I18n.t("contacto_formulario_nombre"),:required => true %> 
    <%= f.text_field :apellido :placeholder => I18n.t("contacto_formulario_apellidos"), :required => true %> 
    <%= f.text_field :email, :placeholder => I18n.t("contacto_formulario_email"), :required => true %> 
    /** (....other tags ....) **/ 
    <%= recaptcha_tags :display => 'clean' %> 
    <%= f.button I18n.t("contacto_formulario_continuar"), type: "submit" %> 
<% end %> 

应用程序/资产/ Java脚本/ contact.js

$(function() { 
    $('.g-recaptcha').attr("data-callback", "recaptcha"); 
}) 
function recaptcha() 
{ 
    console.log("captcha pulsado!"); 
    /** the actions you want, i.e. activate submit button **/ 
} 

在属性“数据回调”中的魔术师

希望它有帮助。

Marino

+0

我喜欢这个解决方案。我使用回调来启用提交按钮。唯一的问题是我不知道如何在验证过期后禁用按钮。我想我们需要一个不同的回调。 – Wit