【发布时间】:2017-06-20 08:16:24
【问题描述】:
我有一个带有 javascript 验证的 Rails Devise 表单。当用户按下提交时,验证工作并且用户重新关注他们需要的表单。
但是,rails 使用 data-disable-with 在按钮被点击后禁用它,因此在验证后用户不能再点击提交。我正在尝试设置某种侦听器来检查按钮何时被禁用,稍等片刻以防止双击,然后重新启用按钮。
我已经尝试了很多次代码迭代,我尝试的最近一次是:
$(document.on("ajax:success", "new_supplier", function() {
var button;
button = $(this).find('.btn-sign-up');
setTimeout((function() { return button.disabled=false; }),1);
});
但是没有成功,之前我尝试只为按钮添加一个监听器:
var button = document.getElementById('btn-sign-up');
button.addEventListener("click", enableButton);
function enableButton() {
if (button.disabled)
{
window.setTimeout(enable(), 2000);
}
}
function enable() {
button.disabled=false;
}
但这失败了,因为它在禁用按钮的功能(隐藏在 rails ether 中)之前运行,因此不起作用。
我的提交按钮很简单:
<%= f.submit "Create my account", class: 'btn-sign-up', id: 'btn-sign-up' %>
有人可以帮我吗?我想如果我可以禁用此页面的 jQuery_ujs 会起作用,但不确定我是否可以这样做。
【问题讨论】:
标签: javascript jquery ruby-on-rails ujs