我有一个使用Rails Devise框架的表单,其中包含JavaScript验证功能。当用户提交表单时,验证会生效并将用户重新聚焦到需要填写的表单上。
然而,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,那就可以解决问题了,但我不确定我是否能够这样做。