Rails data-disable-with с кнопкой повторного включения

У меня есть форма 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 для этой страницы, это будет работать, но не уверен, смогу ли я это сделать.

4 ответа

Решение

Мне удалось решить это довольно просто. Я просто вошел и удалил data-disable-with из кнопки с кодом:

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

А затем восстановить атрибут, когда форма была готова к отправке, чтобы избежать двойного щелчка при создании дубликатов.

Это поведение было изменено в Rails 5, теперь он отключает отправку по умолчанию.

Вместо принятого ответа я бы предложил использовать следующую конфигурацию:

config.action_view.automatically_disable_submit_tag = false

или, чтобы сделать это специально для определенных кнопок, добавьте это к кнопке отправки

data: { disable_with: false }

Это было полезно, чтобы дать мне подсказку о том, что искать. Если кто-то ищет, как исправить это в файле html.erb, это было мое решение:

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

Посмотри на мой ответ.

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

/questions/19305548/povtorno-vklyuchit-ssyilki-otklyuchenyi-s-pomoschyu-disablewith/19305559#19305559

Другие вопросы по тегам