【问题标题】:Re-enable links disabled with disable_with重新启用使用 disable_with 禁用的链接
【发布时间】:2013-06-25 10:41:18
【问题描述】:

如何手动重新启用被 Rails 的disable_with 功能禁用的链接(不是表单元素)?

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    对重新启用链接的调用与表单元素略有不同。它实际上将一个处理程序绑定到阻止其他任何事情发生的单击事件。我能够通过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]'));
    });
    

    【讨论】:

      【解决方案2】:

      我找到的解决方案here

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

      【讨论】:

      • 是的,这适用于 Rails 3.2。本质上,只需将一个或多个 jQuery 对象传递给$.rails.enableFormElements,它就会重新启用它。就我而言,我通过了我提交的表格:$.rails.enableFormElements( $( 'div.modal form' ) )
      【解决方案3】:

      Rails 已更新其 javascript 以不再使用 jQuery。

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 这不会将按钮的文本(即value)改回提交前的状态。
        【解决方案5】:

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

        $.rails.enableFormElements($disabled_button);
        

        地点:

        $disabled_button 是被data-disable-with 禁用的按钮的 jQuery 对象,可以这样选择:

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

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

            • 啊,有趣。寻找将其更改回原始状态的东西。好像不行。
            • 就像贝文布说的。这不会将元素更改回其原始状态。
            猜你喜欢
            • 2015-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-13
            • 1970-01-01
            相关资源
            最近更新 更多