如何启用按钮检查单选按钮

时间:2016-05-12 15:32:11

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

我有一个包含3个单选按钮的foreach,如何在选中单选按钮时启用特定按钮?我有这个:

// Starts by disabling all the buttons
$('.btn-portabilizar').attr('disabled', true);

// If it is checked, enable the a specific button
$('input[name="autorizacao"]:checked').click(function(){
   $('.btn-portabilizar').removeAttr('disabled');
});

我的观点是:

<% @autorizacoes.each do |autorizacao| %>
    <tr>
        <td><%= radio_button_tag 'autorizacao', autorizacao.numero_contrato %></td>
        <td><%= autorizacao.numero_contrato %></td>
        <input class="string required" type="text" name="portabilidade_nova_parcela" id="portabilidade_nova_parcela">
        </td>
        <td>
            <%= link_to "Portabilizar", "#", :class => 'btn btn-primary btn-portabilizar' %>
        </td>
    </tr>
<% end %>

对不起葡萄牙语代码...

更新========================================== /强>

当选中启用按钮时,如果取消选中禁用按钮,我会这样做但不起作用:

  $('input[name="autorizacao"]').click(function(){
    if (this.checked) {
      $(this).closest('tr').find('.btn-portabilizar').prop('disabled', false);
    }
    else
      $(this).closest('tr').find('.btn-portabilizar').prop('disabled', true);

  });

我错了什么?

1 个答案:

答案 0 :(得分:2)

您的单选按钮选择器不正确 - 您只将它附加到已经加载检查的单选按钮上,我假设没有。删除:checked部分:

$('input[name="autorizacao"]').click(function(){
    $('.btn-portabilizar').prop('disabled', false);
});

另请注意,在可能的情况下使用prop()是一种更好的做法。

要仅影响同一行中的按钮,您需要使用jQuery的DOM遍历方法,如下所示:

$('input[name="autorizacao"]').click(function(){
    $(this).closest('tr').find('.btn-portabilizar').prop('disabled', false);
});