2016-05-12 32 views
1

我有一個包含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 %> 

對不起,葡萄牙語代碼...

UPDATE ============ ==============================

當選中啓用按鈕,當未選中禁用按鈕時,我這樣做,但不工作:

$('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); 

    }); 

我的錯誤是什麼?

+0

剛剛成立殘疾人假 – thatOneGuy

+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); 
}); 
+0

是什麼區別?我總是使用attr和removeAttr代替prop –

+1

'prop()'設置DOMElement的屬性,而不必直接訪問DOM。換句話說,它表現更好。 –

+0

@EltonSantos看到[這個問題](http://stackoverflow.com/q/5874652/519413)在這個問題上的完整答案 –