首次单击Rails,Coffeescript后禁用链接

时间:2016-05-10 15:52:46

标签: javascript jquery ruby-on-rails ruby-on-rails-4 coffeescript

首次点击后,应禁用以下链接

<%= link_to "Submit Order", {:action => "charge"}, class: 'btn btn-primary', id: 'confirmButton' %>

以下代码会永久禁用该链接:

ready = ->

$('#confirmButton').click (e) ->
  e.preventDefault()
  return

$(document).ready(ready)    
$(document).on('page:load', ready) 

如何修改此代码,以便首次点击时该链接处于有效状态,然后在后续点击时停用?

5 个答案:

答案 0 :(得分:4)

考虑使用按钮代替; rails'按钮帮助器支持disabled_with data属性,该属性应在单击按钮后自动禁用该按钮。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-button_to-label-Data+attributes

这也适用于表单提交帮助

http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag-label-Data+attributes

答案 1 :(得分:3)

首次点击后,您可以在按钮上添加禁用的课程

$('#confimationButton').on('click', function() {
  if($(this).hasClass('disabled'))
    return;
  // do work
  $(this).addClass('disabled');
});

答案 2 :(得分:1)

Docs的答案略有不同

$('a').on('click', '.disabled', function(){
  return false;
});

然后像他提到的那样添加disabled

答案 3 :(得分:1)

<%= link_to "Submit Order", {:action => "charge"}, class: 'btn btn-primary', id: 'confirmButton', data: { disable_with: "Please wait..." } %>

答案 4 :(得分:0)

如果要更改显示属性(颜色等)但添加类很好,但实际上并未禁用该链接。显然设置了“禁用”#39;财产也没有。我见过的解决方案都与设置“点击”有关。返回false的链接的处理程序或停止点击操作的传播。这篇文章就是一个很好的例子:

disable a hyperlink using jQuery