2009-04-24 9 views
0

J'ai une case à cocher et radiobuttonlist définie comme suit:Comment désactiver asp.net radiobuttonlist via jQuery

<asp:CheckBox id="chkChange" runat="server" text="Enable" /> 
<br /> 
<asp:RadioButtonList id="rblConsole" runat="server" cssclass="console"> 
    <asp:ListItem text="XBox 360" value="xbox" /> 
    <asp:ListItem text="Playstation 3" value="playstation" /> 
</asp:RadioButtonList> 

Ces contrôles sont dans une page de contenu avec une page principale de sorte que le html réelle rendu est:

<table id="ctl00_ContentPlaceHolder1_rblConsole" class="console" border="0"> 
    <tr> 
     <td><input id="ctl00_ContentPlaceHolder1_rblConsole_0" type="radio" name="ctl00$ContentPlaceHolder1$rblConsole" value="xbox" /><label for="ctl00_ContentPlaceHolder1_rblConsole_0">XBox 360</label> 
     </td> 
    </tr> 
    <tr> 
     <td><input id="ctl00_ContentPlaceHolder1_rblConsole_1" type="radio" name="ctl00$ContentPlaceHolder1$rblConsole" value="playstation" /><label for="ctl00_ContentPlaceHolder1_rblConsole_1">Playstation 3</label> 
     </td> 
    </tr> 
</table> 

Sur le javascript onclick sur la case à cocher je veux désactiver les boutons radio dans la liste robConsole radiobutton.

Je suis en train d'obtenir les boutons radio via le sélecteur de endswith jQuery:

function ToggleEnabled() { 
     var isChecked = $("*[id$='chkChange']").is(":checked"); 
     if (isChecked) { 
      $("*[name$='rblConsole'").removeAttr("disabled"); 
     } else { 
      $("*[name$='rblConsole'").attr("disabled", "disabled"); 
     } 
    } 

Alors, comment désactiver ces via jQuery?

Répondre

1

je manque la fermeture du support carré dans le sélecteur. Il devrait être:

$("*[name$='rblConsole']").attr("disabled", "disabled"); 

Doh! Ma faute.

1

premier, retirez le apostrophy dans le sélecteur d'attribut

function ToggleEnabled() { 
     var isChecked = $("*[id$='chkChange']").is(":checked"); 
     if (isChecked) { 
      $("*[name$=rblConsole").removeAttr("disabled"); 
     } else { 
      $("*[name$=rblConsole").attr("disabled", "disabled"); 
     } 
    } 

En second lieu, il vaut mieux tu utiliser la propriété ClientID des contrôles pour obtenir les éléments ids:

function ToggleEnabled() { 
     var isChecked = $("#<%=chkChange.ClientID %>").is(":checked"); 
     if (isChecked) { 
      $("#<%=rblConsole.ClientID %>").removeAttr("disabled"); 
     } else { 
      $("#<%=rblConsole.ClientID %>").attr("disabled", "disabled"); 
     } 
    } 
+0

La deuxième façon de faire cela ne fonctionne pas. Il y a une table créée avec cet ID, mais les boutons radio eux-mêmes ont un numéro ajouté (par exemple _0, _1). La méthode correcte devrait être $ ("input [id^= '<% = rblConsole.ClientID%>']") removeAttr ("désactivé"); où l'identifiant commence par (^) l'identifiant du client. – y0mbo

-1

S'il vous plaît vérifier:

$("input[type=radio][value=EIN]").prop("disabled", true); 
Questions connexes