1 votes

jquery get radiobuttonlist by name dynamically

J'ai deux listes de boutons radios et une liste de cases à cocher sur la page. Idéalement, en fonction de la valeur sélectionnée dans la case à cocher, je souhaite activer/désactiver la liste de boutons radiants correspondante à l'aide d'une fonction jquery.

Mais d'une manière ou d'une autre, $("input[name*=" + columnName + "]") renvoie toujours null. Il ne peut pas trouver le radiobuttonlist par son nom ?

    $(function() {
        function checkBoxClicked() {

            var isChecked = $(this).is(":checked");
            var columnName = "rblColumn" + $(this).parent().attr("alt");

            if (isChecked) {
                $("input[name*=" + columnName + "]").removeAttr("disabled");
            } else {
                $("input[name*=" + columnName + "]").attr("disabled", "disabled");

                $("input[name*=" + columnName + "] input").each(function() {
                    $(this).attr("checked", "")
                });

            }

        }

        //intercept any check box click event inside the #list Div
        $(":checkbox").click(checkBoxClicked);
    });

<asp:Panel ID="TestPanel" runat="server">
<asp:CheckBoxList ID = "chkColumn" runat="server" RepeatDirection="Horizontal">
    <asp:ListItem id = "Column1" runat="server" Text="Column 1" Value="1" alt="1" class="HeadColumn" />
    <asp:ListItem id = "Column2" runat="server" Text="Column 2" Value="2" alt="2" class="HeadColumn"/>
</asp:CheckBoxList>

<table>
    <tr>
        <td>
            <asp:RadioButtonList ID = "rblColumn1" runat="server" RepeatDirection="Vertical" disabled="disabled">
                <asp:ListItem id="liColumn1p" runat="server" />
                <asp:ListItem id="liColumn1n" runat="server" />
            </asp:RadioButtonList>
        </td>
        <td>
            <asp:RadioButtonList ID = "rblColumn2" runat="server" RepeatDirection="Vertical" disabled="disabled">
                <asp:ListItem id="liColumn2p" runat="server" />
                <asp:ListItem id="liColumn2n" runat="server" />
            </asp:RadioButtonList>
        </td>
    </tr>
</table>
</asp:Panel>

source :

<div id="TestPanel">

<table id="chkColumn" border="0">
        <tr>
            <td><span id="Column1" alt="1" class="HeadColumn"><input id="chkColumn_0" type="checkbox" name="chkColumn$0" /><label for="chkColumn_0">Column 1</label></span></td><td><span id="Column2" alt="2" class="HeadColumn"><input id="chkColumn_1" type="checkbox" name="chkColumn$1" /><label for="chkColumn_1">Column 2</label></span></td>
        </tr>
    </table>

<table>
    <tr>
        <td>
            <table id="rblColumn1" class="myRadioButtonList" disabled="disabled" border="0">
        <tr>
            <td><span id="liColumn1p"><input id="rblColumn1_0" type="radio" name="rblColumn1" value="" /></span></td>
        </tr><tr>
            <td><span id="liColumn1n"><input id="rblColumn1_1" type="radio" name="rblColumn1" value="" /></span></td>
        </tr>
    </table>
        </td>
        <td>
            <table id="rblColumn2" class="myRadioButtonList" disabled="disabled" border="0">
        <tr>
            <td><span id="liColumn2p"><input id="rblColumn2_0" type="radio" name="rblColumn2" value="" /></span></td>
        </tr><tr>
            <td><span id="liColumn2n"><input id="rblColumn2_1" type="radio" name="rblColumn2" value="" /></span></td>
        </tr>
    </table>
        </td>
    </tr>
</table>

</div>

1voto

Cindy Points 29

J'ai compris. J'ai ajouté cssclass à chaque radiobutonlist et je l'ai trouvé par id :

$(".myRadioButtonList[id*=" + columnName + "]").removeAttr("disabled") ;

Cela fonctionne maintenant. Merci, Patrick. Vous me rappelez l'utilisation abusive des noms et des identifiants.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X