2009-08-04 12 views
0

Je rencontre un problème avec le code suivant. Ci-dessous mon javascriptProblème de sélection de radiobuttons avec JQuery

<script type="text/javascript"><!-- 
function toggleTB(val, targetTB) { 
    var b = 'disabled'; 
    if (val == '1') b = ''; 
    $('#' + targetTB).attr('disabled', b); 
} 

mon html -

<input id="obp17" name="obp17" onclick="toggleTB('0', 'obp4a');" type="checkbox"/>Corner 
<input id="obp4a" name="obp4a" type="radio" value="17" />Facing Down 
<input id="obp4a" name="obp4a" type="radio" value="18" />Facing Up 

Ce que je veux arriver est que lorsque l'utilisateur clique sur la case à cocher, les deux boutons radio sont désactivées. Ce qui se passe est que seul le premier bouton radio est désactivé. Je suis nouveau à jquery sélecteurs, quelqu'un peut-il me dire la syntaxe correcte.

Merci à l'avance

Répondre

0

Vous voulez Donnez à vos éléments des identifiants uniques. Ensuite, pour simplifier la sélection de jQuery, donnez-leur aussi une classe comme class = "corner_radio".

Ensuite, votre code jquery se transforme en:

function toggleTB(val, targetTB) { 
    var b = 'disabled'; 
    if (val == '1') b = ''; 
    $('.corner_radio').attr('disabled', b); 
} 
0

Vous souhaitez donner différentes ids à chaque entrée que vous souhaitez désactiver puis définissez les attributs de ces ids en conséquence.

+0

Je ne peux pas faire cela. Le code est généré par la classe ASP.Net MVC Html.RadioButton et assigne le même nom à tous les boutons du même groupe. –

+0

Pouvez-vous attribuer un style, puis utiliser jQuery pour sélectionner le style? – Jon

+0

Il est toujours préférable de faire l'évidence. Ca doit être une carence en caféine de ma part de ne pas y avoir pensé Merci !!!! –

0

Vous devez utiliser des identifiants uniques pour les radios, ou non du tout, ou plus simplement, de leur donner une classe, par exemple:

<input id="obp4a" name="obp4a" class="radio" type="radio" value="17" />Facing Down 
<input id="obp4b" name="obp4a" class="radio" type="radio" value="18" />Facing Up 

Dans votre JS:

$('.radio').attr('disabled', true); 
0

Vous voudrez peut-être ajouter un gestionnaire de discrètement clic en utilisant jQuery et à la place, vous pouvez utiliser jQuery de attr("checked") pour savoir si la case est cochée ou non. Quelque chose de plus comme ceci:

var toggleTB = function(el, radioName) { 
    $("input:radio[name=" + radioName + "]").attr("disabled", $(el).attr("checked")); 
} 
$(function() { 
    $("#obp17").click(function(e) { toggleTB(e.target, "obp4a"); }); 
}); 

J'ai aussi nettoyé le code HTML un peu, a ajouté quelques étiquettes (de sorte que vous pouvez cliquer sur le mot associé à l'élément de forme) et enlevé les bits non valides:

<label><input id="obp17" name="obp17" type="checkbox" />Corner</label> 
<label><input name="obp4a" type="radio" value="17" />Facing Down</label> 
<label><input name="obp4a" type="radio" value="18" />Facing Up</label> 
0

Vous pouvez utiliser true/false pour la variable b.

var b = true; //false 
Questions connexes