Восстановить ссылки отключены с помощью disable_with

Как я могу вручную повторно активировать ссылки (а не элементы формы), которые отключены с помощью функции Rails disable_with?

Ответ 1

Призыв к повторно соединяемым ссылкам несколько отличается от элементов формы. Он фактически привязывает обработчик к событию click, которое останавливает что-либо еще. Я смог понять это с помощью изучения того, как библиотека jquery-ujs.

Чтобы отменить этот эффект, просто используйте метод enableElement для вашего объекта jQuery:

$.rails.enableElement($('a[data-disable-with]'));


С Turbolinks это также помогает наблюдать за событием 'page:change' вместо window.unload:

$(document).on('page:change', function() {
   $.rails.enableElement($('a[data-disable-with]'));
});

Ответ 2

Решение, которое я нашел здесь:

$(window).unload(function() {
  $.rails.enableFormElements($($.rails.formSubmitSelector));
});

Ответ 3

Rails обновил свой javascript, чтобы больше не использовать jQuery.

Теперь вы можете повторно включить элементы со следующим (если вы все еще используете jQuery):

var selectors = [Rails.linkDisableSelector, Rails.formEnableSelector].join(', ');
$(selectors).each(function() {
  Rails.enableElement(this);
})

Ответ 4

Основываясь на решении @DGM, я получил следующий код:

$.rails.enableFormElements($disabled_button);

Где:

$disabled_button - это объект jQuery для кнопки, отключенной кнопкой data-disable-with, которая может быть выбрана следующим образом:

$disabled_button = $('[data-disable-with]');

Ответ 5

Вы можете использовать jQuery для удаления атрибута disable-with, который Rails добавляет к кнопке: $ ( '# Disabledbutton') removeAttr ( 'данных Disable-с');.

Ответ 6

OK Я нашел эту интересную работу (видимо, проблема только в FF) set: autocomplete = > 'off', и теперь он работает. Или один из других ответов может работать.

ref: https://github.com/rails/jquery-ujs/issues/357

Ответ 7

Эй, это довольно просто, вам просто нужно найти кнопку и сделать

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