2

奇妙な問題があります。チェックすると、選択した項目に対応する下のdivが表示されるラジオボタンリストがあります。ラジオ ボタン リストの上には、チェック ボックス リストがあります。ラジオ ボタン クリック イベントは、上記のチェック ボックス リストからチェックボックスをオンにするまで正常に機能します。上記のチェック ボックス リストの項目をオンにすると、選択したラジオ ボタンの値ではなく、「オン」が返され始めます。何か案が?

jQuery:

<script type="text/javascript">
function CheckAllTrucks(sendingcb) {
    $("#divTruckList :checkbox").prop("checked", $(sendingcb).prop("checked"));
}

function SetTimeframeInput(sendingrbl) {
    var value = $(sendingrbl + ":checked").val();

    $("#divTimeFrameControls .timeframectrls").each(function () {
        $(this).hide();
    });

    $("#div" + value).show();
}

HTML/ASP.NET コード:

<div class="form-field">
    <asp:CheckBox ID="cbSelectAllTrucks" runat="server" Text="Select All Trucks" onclick="CheckAllTrucks(this)" />
    <div id="divTruckList">
        <asp:CheckBoxList ID="cblTrucks" runat="server" />
    </div>
</div>
<div class="form-field">
    <asp:RadioButtonList ID="rblTimeFrame" runat="server" onclick="SetTimeframeInput(this)">
        <asp:ListItem Text="Month" Value="month" />
        <asp:ListItem Text="Quarter" Value="quarter" />
        <asp:ListItem Text="January-December" Value="jandec" />
        <asp:ListItem Text="July-June" Value="juljun" />
    </asp:RadioButtonList>
    <div id="divTimeFrameControls">
        <div id="divmonth" class="timeframectrls" style="display: none;">
            <!-- month fields -->
        </div>
        <div id="divquarter" class="timeframectrls" style="display: none;">
            <!-- quarter fields -->
        </div>
        <div id="divjandec" class="timeframectrls" style="display: none;">
            <!-- jandec fields -->
        </div>
        <div id="divjuljun" class="timeframectrls" style="display: none;">
            <!-- juljun fields -->
        </div>
    </div>
</div>

前もって感謝します!

編集

これは、チェック ボックスの 1 つがオンになっている場合にのみ発生することがわかりました。オンにしてからオフにしても、値は正しいままです。チェックボックスがチェックされている場合のみ、値が「オン」に設定されます。

4

2 に答える 2

0

何が問題なのかはまだわかりませんが、ラジオボタンリストのIDを直接参照することで修正できました。このような:

function SetTimeframeInput() {
    var value = $("#rblTimeFrame input:checked").val();

    $("#divTimeFrameControls .timeframectrls").each(function () {
        $(this).hide();
    });

    $("#div" + value).show();
}

ご意見ありがとうございます。

于 2012-06-08T19:10:16.080 に答える
0

(this)関数に渡す代わりにEventObject、クリック時にデフォルトで渡されるものを使用してみてください:

function SetTimeframeInput(e) {
    var value = $(e.currentTarget).val();   

// value contains selected radio button`s value 

// continue your code here 

}

これが役立つことを願っています。

于 2012-06-08T18:30:48.510 に答える