2

ドロップダウンリストがあります。ユーザーが選択した値を変更するとすぐに、ページがリロードされます。

html は次のようになります。

<select id="period" name="MyViewModel.Period">
    <option selected="selected" value="/Home/11-2012/Index">November 2012</option>
    <option value="/Home/10-2012/Index">October 2012</option>
</select>

jquery スクリプトは次のようになります。

<script type="text/javascript">
    $(document).ready(function () {
        $('select#period').change(function () {
            var temp = $(this).find('option:selected').val();
            document.location.href = temp;
        });
    });
</script>

すべてがうまく機能しますが、元のページが読み込まれたときにユーザーがブラウザーの [戻る] ボタンを使用すると、選択した値が変更されます。それは確かにユーザーを混乱させます。

では、ブラウザの戻るボタンで前のページに移動するときにドロップダウンリストの値が変更されるのを避けることは可能ですか?

PS: このASP.NET DropdownList autopostback と Browser Back Buttonは同様の問題のように見えますが、答えはなく、Java スクリプトを使用して値を再割り当てするという考えだけです。しかし、私はその方法を見つけることができませんでした...キャッシュをオフにすることが唯一の方法ではないことを願っています. だったらドロップダウンリストはやめたほうがいいですよね…

これは私の最初の投稿であり、この質問に私を導きました。

4

2 に答える 2

1

ユーザーが選択した値を変更するとすぐに、ページがリロードされます。

ajax を使用してページのコンテンツをリロードできれば、この問題は発生しません。

于 2012-10-23T10:15:05.980 に答える
0

これは私の問題を解決する回避策です。

現在の日付を表示するリンクを追加し、ドロップダウンリストを非表示にしました。

HTML:

<select id="period_s" name="_WorkerInfoViewModel.Period">
    <option value="url1">November 2012</option>
    <option selected="selected" value="url2">October 2012.</option>
</select>
<a id="period_a" data="url2">October 2012</a>

CSS:

select#period_s {
display:none;
}

a#period_a {
cursor:pointer;
}

次に、ドロップダウン リストを切り替え、ドロップダウン リストで選択した値を変更する jquery スクリプトを追加しました。選択した値が変更された後、リストを再び非表示にします。

<script type="text/javascript">
    $(document).ready(function () {
        $('select#period_s').change(function () {
            var temp = $(this).find('option:selected').val();                
            $(this).toggle();
            document.location.href = temp;
        });
        $('a#period_a').click(function () {
            $('select#period_s').val($(this).attr('data'));
            $('select#period_s').toggle();
        });
    });
</script>

誰かがより良い解決策を提供するまで、これを答えとしてマークします。

于 2012-10-24T00:57:37.077 に答える