jQuery pour désactiver/activer le textarea en fonction bouton radio est sélectionné à l'intérieur de la boucle

J'ai la suite de champs de formulaire. Si le bouton radio (travel_yes/no_##) est modifié à partir de No à Yes, puis le suivant textarea (travelDetails_#) doivent être activées. Si ils changent on Ne, puis le textarea doit être désactivé de nouveau. Je tiens à rester loin de l'aide de .next() ou .find() pour la performance car je sais que mes valeurs d'ID unique (également l'emplacement des champs textarea peut changer).

MISE À JOUR: BOUTONS RADIO DEVRAIENT ÊTRE DES GROUPES, PAR JEU, PAS TOUS ENSEMBLE

<div class="controls">
<label class="radio inline">
<input type="radio" name="travel1" data-travelNumber="1" id="travel_yes_1" value="Yes" tabindex="25" >
Yes 
</label>
<label class="radio inline">
<input name="travel1" type="radio" data-travelNumber="1" id="travel_no_1" value="No" tabindex="26" checked >
No
</label>
</div>
<div class="controls">
<textarea name="travelDetails" id="travelDetails_1" ></textarea>
</div>
<div class="controls">
<label class="radio inline">
<input type="radio" name="travel2" data-travelNumber="2" id="travel_yes_2" value="Yes" tabindex="25" >
Yes
</label>
<label class="radio inline">
<input name="travel2" type="radio" data-travelNumber="2" id="travel_no_2" value="No" tabindex="26" checked >
No
</label>
</div>
<div class="controls">
<textarea name="travelDetails" id="travelDetails_2"></textarea>
</div>
<div class="controls">
<label class="radio inline">
<input type="radio" name="travel3" data-travelNumber="3" id="travel_yes_3" value="Yes" tabindex="25" >
Yes
</label>
<label class="radio inline">
<input name="travel3" type="radio" data-travelNumber="3" id="travel_no_3" value="No" tabindex="26" checked >
No
</label>
</div>
<div class="controls">
<textarea name="travelDetails" id="travelDetails_3"></textarea>
</div>

Voici mon jQuery code qui ne fonctionne PAS.

$("[data-travelNumber]").each(function() {
var $this = $(this), limit = +$(this).data("travelNumber");
$("input:radio[name=travel]:checked").live('click',function(){
if ( $(this).val() === 'Yes' )
$('#travelDetails_' + limit).removeAttr('disabled');
else
$('#travelDetails_' + limit).attr("disabled", "enabled");
});
});
});
  • Il est toujours préférable de ne PAS utiliser des attributs HTML, il limite la validation du code et peut ne pas fonctionner correctement dans tous les navigateurs.
  • C'est un produit principal et le navigateur du client prend en charge. Mais c'est une bonne info pour quelqu'un d'autre qui pourrait venir à travers ce, aussi.
InformationsquelleAutor HPWD | 2012-12-21