0

テーブル付きの ASP.NET Web フォームがあります。テーブル内には radiobuttonlist コントロールがあり、その下には Panel があります。パネル内には、他の Web コントロールを含むいくつかのタグがあります。

私がやりたいことは、ラジオボタンリストの選択に基づいてパネルを表示または非表示にすることです。私のjQueryにはこれがあります:

$(document).ready(function() {    
    $('#<%= rblCarrier.ClientID%>').find('input:radio').click(function() {
        var selVal = $('#<%= rblCarrier.ClientID %>').find('input:checked').val();
        if (selVal == "1") $("#mydiv").show("fast");                
        else  $("#mydiv").hide("fast");            
    })
});

ディスプレイに置き換える$("#mydiv").show("fast");と、alertそのalert時点までのすべてが機能していることがわかります。

私のasp.netパネルはHTMLテーブルの中にあることを思い出してください。

ラジオボタンの値が「1」の場合はパネルの内容を表示し、それ以外の場合は非表示にするだけです。

4

2 に答える 2

0

みんな私もこの問題に苦労していました(パネルを非表示/表示するためにjQueryを使用していますが、私の場合はRadioButtonListを使用しており、テーブル内ではありません)、多くの投稿を検索し、答えが見つかりませんでしたが、ここでそれを機能させることができましたやりました...

私のコードは次のとおりです。

<div>
            <p class="space">3.2. ACCOMMODATION (*)</p>

            <asp:RadioButtonList ID="accomodation" runat="server" RepeatDirection="Horizontal" RepeatLayout="Flow" Width="500px">
                <asp:ListItem Text="Not Required" Value="Not Required"></asp:ListItem>
                <asp:ListItem Text="Required" Value="Required"></asp:ListItem>
            </asp:RadioButtonList>

            <asp:Panel ID="PanelAccommodation" runat="server">
                <p>
                    Number of nights (*):
                     <asp:RequiredFieldValidator ID="RequiredFieldValidator12" runat="server" ControlToValidate="numberOfNights" ForeColor="red" ErrorMessage="<- Required"></asp:RequiredFieldValidator>
                </p>
                <asp:TextBox ID="numberOfNights" runat="server" Width="50px"></asp:TextBox>

                <ajaxToolkit:FilteredTextBoxExtender ID="FilteredTextBoxExtender1" TargetControlID="numberOfNights"
                    FilterType="Numbers" runat="server">
                </ajaxToolkit:FilteredTextBoxExtender>

                <p>Preferred Hotel:</p>
                <asp:TextBox ID="preferredHotel" runat="server" Width="450px"></asp:TextBox>

                <p>Preferred Hotel URL:</p>
                <asp:TextBox ID="preferredHotelURL" runat="server" Width="450px"></asp:TextBox>
            </asp:Panel>
        </div>

そして私が使用したjquery関数:

$(document).ready(function () {
            $("#MainContent_PanelAccommodation").hide("fast");
            $('#<%= accomodation.ClientID%>').find('input:radio').click(function () {
                var selVal = $('#<%= accomodation.ClientID %>').find('input:checked').val();
                if (selVal == "Required") {
                    $("#MainContent_PanelAccommodation").show("fast");
                }
                if (selVal == "Not Required") {
                    $("#MainContent_PanelAccommodation").hide("fast");
                }
            })
        });

jquery の ID には「MainContent」が含まれていますが、HTML の ID には含まれていないことに注意してください。これは、コードを調べてパネルを探すと、継承されているため、MainContent_PanelAccommodation と同様の ID が表示される可能性があるためです。

<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">

これが同じ問題に苦しんでいる人々に役立つことを願っています...

于 2015-01-26T10:50:51.250 に答える
0

私はこれをあきらめました。どのフォーラムにも、.NET パネルまたはプレースホルダーで実際に動作するコードを持っている人はいませんでした。だから、もっと楽な道を選んだ。パネルを削除し、代わりにテーブル行の中にテーブルを埋め込みました。テーブルに ID を指定すると、jQuery を使用して簡単に表示/非表示を切り替えることができました。どうやら .NET サーバー コントロールは jQuery ではうまく機能しません。

于 2013-01-23T12:36:13.967 に答える