che*_*ell 5 ruby ruby-on-rails invisible-recaptcha
我正在使用recaptcha gem.Rails 5.2.
我有以下表格:
= simple_form_for @quote_request_form, url: quote_requests_path, html: {id: "invisible-recaptcha-form"} do |f|
.form-group
= f.input :name, label: false, placeholder: 'First and Last Name',
.form-group.actions.mt-5
button.btn.btn-primary.btn-lg.btn-block#submit-btn Submit
= invisible_recaptcha_tags ui: :invisible, callback: 'submitInvisibleRecaptchaForm'
Run Code Online (Sandbox Code Playgroud)
我为表单添加了以下javascript:
javascript:
document.getElementById('submit-btn').addEventListener('click', function (e) {
e.preventDefault();
grecaptcha.execute();
});
var submitInvisibleRecaptchaForm = function () {
document.getElementById("invisible-recaptcha-form").submit();
};
Run Code Online (Sandbox Code Playgroud)
我检查控制器中recaptcha的值如下:
if verify_recaptcha(model: @quote_request_form) && @quote_request_form.save
redirect_to quote_confirm_path, notice: "Your quotation request is being processed"
else
render :new
end
Run Code Online (Sandbox Code Playgroud)
只要我使用e.preventDefault(),它就可以工作; 线.如果我删除这一行,我会在recaptcha中失败,我可以在参数中看到recaptcha attriburte正在发送空白数据.
我不明白为什么我需要它,因为没有文档指定它.所以我做错了什么,但我无法弄清楚.
任何人都可以看到我如何解决这个问题?
您需要该e.preventDefault()语句,否则表单将在recaptcha执行回调之前提交.
发生这种情况是因为<button>没有type属性具有submit默认值/行为.如果查看recaptcha文档,<button>标记的type属性定义为button,没有关联的行为,因此单击它时不会发生任何操作.
回到你的情况,要么保留e.preventDefault()语句,要么将type属性设置为button:
.form-group.actions.mt-5
button.btn.btn-primary.btn-lg.btn-block#submit-btn type="button" Submit
= invisible_recaptcha_tags ui: :invisible, callback: 'submitInvisibleRecaptchaForm'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
294 次 |
| 最近记录: |