2016-05-12 5 views
1

Ich habe eine foreach, die 3 Radiobuttons enthalten, wie aktiviere ich eine bestimmte Taste, wenn der Radiobutton aktiviert ist? Ich habe dies:Wie aktivieren Knopf auf dem Radiobutton

// 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'); 
}); 

Und meiner Meinung nach ist dies:

<% @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 %> 

Sorry für Code in portugiesisch ...

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

Wenn aktiviert, aktivieren Sie die Schaltfläche, wenn deaktiviert deaktivieren, mache ich es, aber nicht funktionieren:

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

    }); 

Was ist falsch?

+0

nur deaktiviert auf false gesetzt – thatOneGuy

+0

Mann nicht funktionieren ... –

Antwort

2

Ihr Radio Button Selector ist falsch - Sie fügen es nur an Radiobuttons an, die bereits beim Laden überprüft wurden, von denen ich annehme, dass es keine gibt. Entfernen Sie den :checked Teil:

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

Beachten Sie auch, dass es besser Praxis ist prop() zu verwenden, wo möglich.

nur auf die Schaltfläche in der gleichen Zeile beeinflussen Sie jQuery DOM-Traversal-Methoden, wie diese verwenden, müßten:

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

etwas Unterschied ist, ? Ich verwende immer attr und removeAttr anstelle von prop –

+1

'prop()' setzt die Eigenschaft des DOMEelements, ohne direkt auf das DOM zugreifen zu müssen. Mit anderen Worten, es funktioniert besser. –

+0

@EltonSantos siehe [diese Frage] (http://Stackoverflow.com/q/5874652/519413) für eine vollständige Antwort auf das Thema –

Verwandte Themen