【发布时间】:2013-06-25 10:41:18
【问题描述】:
如何手动重新启用被 Rails 的disable_with 功能禁用的链接(不是表单元素)?
【问题讨论】:
如何手动重新启用被 Rails 的disable_with 功能禁用的链接(不是表单元素)?
【问题讨论】:
对重新启用链接的调用与表单元素略有不同。它实际上将一个处理程序绑定到阻止其他任何事情发生的单击事件。我能够通过investigating how the jquery-ujs library 弄清楚这一点。
要扭转这种效果,只需在您的 jQuery 对象上使用 enableElement 方法:
$.rails.enableElement($('a[data-disable-with]'));
使用 Turbolinks,它还有助于监视 'page:change' 事件而不是 window.unload:
$(document).on('page:change', function() {
$.rails.enableElement($('a[data-disable-with]'));
});
【讨论】:
我找到的解决方案here:
$(window).unload(function() {
$.rails.enableFormElements($($.rails.formSubmitSelector));
});
【讨论】:
$.rails.enableFormElements,它就会重新启用它。就我而言,我通过了我提交的表格:$.rails.enableFormElements( $( 'div.modal form' ) )
Rails 已更新其 javascript 以不再使用 jQuery。
您现在可以使用以下命令重新启用元素(假设您仍在使用 jQuery):
var selectors = [Rails.linkDisableSelector, Rails.formEnableSelector].join(', ');
$(selectors).each(function() {
Rails.enableElement(this);
})
【讨论】:
嘿,这很简单,你只需要找到按钮并做
$button = $('#someId')
$.rails.enableElement($button)
$button.removeAttr('disabled')
【讨论】:
value)改回提交前的状态。
基于@DGM 解决方案,我最终得到以下代码:
$.rails.enableFormElements($disabled_button);
地点:
$disabled_button 是被data-disable-with 禁用的按钮的 jQuery 对象,可以这样选择:
$disabled_button = $('[data-disable-with]');
【讨论】:
好的,我发现了这个有趣的解决方法(显然问题只在 FF 中) 设置 :autocomplete => 'off' 现在它可以工作了。或者其他答案之一也可能有效。
【讨论】:
您可以使用 jQuery 删除 Rails 添加到按钮的 data-disable-with 属性: $('#disabledbutton').removeAttr('data-disable-with');
【讨论】: