Rails 数据禁用和重新启用按钮

Rails data-disable-with re-enabling button

我有一个 Rails 具有 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 乙醚中)之前不起作用。

我的提交按钮很简单:

    <%= f.submit "Create my account", class: 'btn-sign-up', id: 'btn-sign-up' %>

有人可以帮我吗?我想如果我可以禁用此页面的 jQuery_ujs 就可以了,但不确定我是否可以这样做。

我很简单地解决了这个问题。我刚进去并使用代码从按钮中删除了 data-disable-with:

    $('#my-button').removeAttr('data-disable-with');

然后 re-establishing 表单准备好提交时的属性,以防止双击创建重复项。

此行为已在 Rails 5 中更改,现在默认禁用提交。

我建议使用以下配置,而不是接受的答案:

config.action_view.automatically_disable_submit_tag = false

或者,要针对特定​​按钮临时执行此操作,请将其添加到提交按钮

data: { disable_with: false }

看我的回答

$button = $('#someId')
$.rails.enableElement($button)
$button.removeAttr('disabled')

这有助于提示我要查找的内容。如果有人正在寻找如何在您的 html.erb 文件中更正此问题,这是我的解决方案:

<p>
  <%= f.submit 'Submit', data: { disable_with: false } %>
</p>