使用disable_with重新启用禁用的链接

如何手动重新启用使用disable_withfunction禁用的链接(而不是表单元素)?

我在这里找到的解决方案:

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

对重新启用链接的调用与表单元素略有不同。 它实际上将处理程序绑定到click事件,以阻止其他任何事情发生。 我能够通过调查jquery-ujs库来解决这个问题。

要反转此效果,只需在jQuery对象上使用enableElement方法:

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

使用Turbolinks,它还有助于监视'page:change'事件而不是window.unload

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

Rails更新了他们的javascript,不再使用jQuery。

您现在可以使用以下内容重新启用元素(假设您仍在使用jQuery):

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

基于@DGM解决方案,我最终得到以下代码:

 $.rails.enableFormElements($disabled_button); 

哪里:

$disabled_buttondata-disable-with的按钮的jQuery对象,可以像这样选择:

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

您可以使用jQuery删除Rails添加到按钮的data-disable-with属性:$(’#disablebutton’)。removeAttr(’data-disable-with’);

好的我发现这个有趣的工作(显然问题只在FF中)设置:autocomplete =>’off’,现在它可以工作了。 或者其中一个答案可能也有效。

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

嘿,它很简单你只需要找到按钮并做

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