2010-02-24 4 views
3

J'ai une case à cocher et désactivée Radiobuttonlist dans la même ligne de table et différente td et j'essaie juste de l'activer/désactiver lorsque je coche/décoche une case à cocher.jquery checkbox activer/désactiver radiobuttonlist

<tr class = "main"> 
    <td colspan="2"> 
     <input id="CheckOne" type="checkOne" name="checkOne" /> 
     <label for="CheckOne">Some Text</label> 
    </td> 
    <td align="center"> 
     <table id="RadioButtonListOne" disabled="disabled" title="Choices" border="0"> 
     <tr> 
     <td> 
        <span disabled="disabled"> 
        <input id="RadioButtonListOne_0" type="radio" name="RadioButtonListOne" value="Y" disabled="disabled" /> 
        <label for="RadioButtonListOne_0">Yes</label></span> 
       </td> 
       <td> 
        <span disabled="disabled"><input id="RadioButtonListOne_1" type="radio" name="RadioButtonListOne" value="N" disabled="disabled" /> 
        <label for="RadioButtonListOne_1">No</label> 
        </span> 
       </td>  
      </tr> 
     </table> 
    </td> 
    </tr> 

Voici comment html côté serveur d'origine ressemble:

<tr class = "main"> 
     <td colspan="2"> 
      <asp:CheckBox ID="CheckBoxOne" runat="server" Text="Some Text"/> 
     </td> 
     <td align="center"> 
      <asp:RadioButtonList ID="RadioButtonListOne" RepeatDirection="Horizontal"> 
        <asp:ListItem Value="Y">Yes asp:ListItem> 
        <asp:ListItem Value="N">No</asp:ListItem> 
      </asp:RadioButtonList> 
     </td> 
    </tr> 

Pour une raison quelconque, quand je suis en train de faire quelque chose d'évident que, par exemple

$('#<%= CheckBoxOne.ClientID %>').click(function() 
    { 
     if ($(this).is(":checked")) 
     { 
      $('#<%= RadioButtonListOne.ClientID%> input:radio').removeAttr('disabled'); 

     } 
     else 
     { 
       $('#<%= RadioButtonListOne.ClientID%> input:radio').attr('disabled', 'disabled'); 
     } 
    }); 

ne fait donc pas travailler, mais logiquement il le devrait. Qu'est-ce que je fais mal ici?

+0

Salut, Vos contrôles sont-ils sur les serveurs? Vous n'avez aucun attribut 'runat =" server "' sur le balisage, ce qui signifie que '<% = CheckOne.ClientID%>' ne fonctionnerait certainement pas. Pouvez-vous poster votre code réel si le ci-dessus est juste pseudocode? Il peut faire clouer le problème exact un peu plus facile ... –

+0

Oui, ils sont je peux poster un html côté serveur si cela rendra plus facile à comprendre – Victor

Répondre

0

pourquoi vous incluez <% = entrée RadioButtonListOne.ClientID%: la radio dans votre code jquery, vous manque également la fuite> symbole

$('#<%= RadioButtonListOne.ClientID%> input:radio').removeAttr('disabled'); 

est votre code jquery dans la même page il est traité par le serveur avant d'être téléchargé par le client? Des trucs comme <% = RadioButtonListOne.ClientID%> ne fonctionnera pas en dehors soit php, asp, ou html.erb et les fichiers comme

vous pouvez essayer de changer votre chèque si ce

if ($(this).attr('checked') == 'checked') 

place de .est (''): vérifiés

+0

C'était juste une faute de frappe pour avoir signalé cela dehors – Victor

0

ID de votre case à cocher est "CheckOne":

<input id="CheckOne" type="checkOne" name="checkOne" /> 

Mais votre code ressemble à lui une référence (le plus probable) valeur numérique:

$('#<%= CheckOne.ClientID %>').click(function() 

ID de votre case à cocher doit correspondre à l'ID du client:

<input id="<%= CheckOne.ClientID %>" type="checkOne" name="checkOne" /> 

ou

<input id="CheckOne_<%= CheckOne.ClientID %>" type="checkOne" name="checkOne" /> 

avec le jQuery ajusté à

$('#CheckOne_<%= CheckOne.ClientID %>').click(function() 

Les ID bouton radio ont un problème similaire.

+0

Ouais ceci est un contenu page afin d'éviter les noms longs mutilés je les ai simplifiés un peu, voir aussi html original ci-dessus – Victor