Désolé d'être si tard à la fête, mais je vois une marge d'amélioration ici. Pas concernant "désactiver la zone de texte", mais à la sélection de radionbox et la simplification du code, ce qui en fait un peu plus à l'épreuve du temps, pour des modifications ultérieures.
Tout d'abord, vous ne devez pas utiliser .each () et utiliser l'index pour désigner un bouton radio spécifique. Si vous travaillez avec un ensemble dynamique de boutons radio ou si vous ajoutez ou supprimez des boutons radio par la suite, votre code réagira sur le mauvais bouton!
Ensuite, mais ce n'était probablement pas le cas lors de la création de l'OP, je préfère utiliser .on ('click', function () {...}) au lieu de click ...
http: //api.jquery. com / sur /
Lst mais pas des moindres, le code pourrait également être rendu plus simple et à l'épreuve du temps en sélectionnant le bouton radio basé sur son nom (mais qui apparaissait déjà dans un message).
J'ai donc fini avec le code suivant.
HTML (basé sur le code okw)
<span id="radiobutt">
<input type="radio" name="rad1" value="1" />
<input type="radio" name="rad1" value="2" />
<input type="radio" name="rad1" value="3" />
</span>
<div>
<input type="text" id="textbox1" />
<input type="checkbox" id="checkbox1" />
</div>
Code JS
$("[name='rad1']").on('click', function() {
var disable = $(this).val() === "2";
$("#textbox1").prop("disabled", disable);
$("#checkbox1").prop("disabled", disable);
});
name
s peut être identique, maisid
s doit être unique.