0

最初のページの読み込み時に読み込まれる 4 つのドロップダウン リストがあります。それらはすべて次のようになります。

@Html.LabelFor(m => m.SelectedAgencies, "Agencies") <br />
@Html.DropDownListFor(m => m.SelectedAgencies, Model.AllAgencies, new { @class = "chosen-select", multiple = "multiple", style = "width: 350px;" })
<button type="submit" id="btnShow" name="show">Show</button>

ボタンをクリックすると同じビューに結果が生成され、ドロップダウン リストはフィルターになります。

JavaScript の完全な初心者であり、これまでのところほとんど作成されていません。

<script type="text/javascript">
    $(function () {
        $('.chosen-select').chosen();
    });
    $(document).ready(function () {
    if ($('#AllAgenciesSelected').is(':checked')) {
            $("#SelectedAgencies_chosen").hide();
        }
    $("#AllAgenciesSelected").click(function () {
            $("#SelectedAgencies_chosen").toggle(!this.checked);
        });
    });
</script>

ユーザーがこのページに戻ったときの部分を除いて、すべてが正常に機能しているようです。ドロップダウン リストで複数のパラメータが選択されている場合、ページがリロードされたときに、最後に選択されたパラメータのみが選択されたままになります。選択した値をどこかに保存しようとしていますが、ページが再度読み込まれた後、保存された結果がドロップダウン リストの選択に取り込まれます。

    var agenciesVal;
    $("#btnShow").click(function () {
        agenciesVal = $("#SelectedAgencies").value();
    });

    $(document).ready(function () {
    //code from before
    if (agenciesVal!=null) {
            $('#SelectedAgencies').val = agenciesVal;
        }
    });

私はjqueryを初めて使用しますが、このようなことを試みることは理にかなっていますか? これを達成するためのより簡単でエレガントな方法はありますか?

4

2 に答える 2

1

選択したオプションを収集するには:

$(document).ready(function () {
    var agenciesVal = [];
    $("#btnShow").click(function () {
        agenciesVal[] = $.each("#SelectedAgencies option"), function( i, v ){
            $(this).index(i).attr("selected") == true; 
        });
    });
});

選択したオプションを復元するには..

$(document).ready(function () {
    if (agenciesVal.length != null) {
        $.each(agenciesVal, function( i, v ){
            $('#SelectedAgencies option').index(i).attr('selected', true);
        });
    }
});
于 2013-08-16T11:39:47.957 に答える
0

彼はページの更新を行っていると思います

<button type="submit">

現在のコードは機能しますか?

于 2013-08-16T11:38:07.147 に答える