2010-03-25 3 views
0

Bonjour à tous. Je suis arrivé ce morceau de code:Quel est le meilleur moyen de désactiver une entrée avec un bouton radio via jQuery?

<div> 
    <input id="id1" name="radioButton" type="radio"> 
    <input type="text" id="idText1"> 
    <p></p> 
    <input id="id2" name="radioButton" type="radio"> 
    <input type="text" id="idText2"> 

</div> 

Lorsque je sélectionne la ID1 radio que je dois désactiver idText2 et lorsque je sélectionne ID2 radio que je dois désactiver idText1. Y a-t-il une manière élégante?

Amitiés Massimo

Répondre

1

Je suppose que vous voulez activer la zone de texte à côté du bouton radio aussi?

$(function(){ 
    $('#id1, #id2').click(function(){ 
    $('#idText1')[0].disabled = (this.id != 'id1'); 
    $('#idText2')[0].disabled = (this.id != 'id2'); 
    }); 
}); 

Vous pouvez commencer par un bouton radio vérifié et l'autre zone de texte désactivé:

<div> 
    <input id="id1" name="radioButton" type="radio" checked> 
    <input type="text" id="idText1"> 
    <p></p> 
    <input id="id2" name="radioButton" type="radio"> 
    <input type="text" id="idText2" disabled> 
</div> 
+0

Pourquoi $ ('# idText1') [0] ... 'si c'est un sélecteur d'ID? Sûrement il n'y en a qu'un. –

+0

@Ben, pour accéder à l'élément dom réel, et non à l'objet jQuery .. (* parce qu'il accède directement à la propriété disabled, pas via les setters jquery .. *) –

3

et une doublure pour le fun :) (bien en plus de l'emballage ..)

$('div :radio').click(function(){ 
    $(this).siblings(':text').attr('disabled','disabled').end().next(':text').removeAttr('disabled'); 
}) 
Questions connexes