0

MVC 2 / jQuery モバイル アプリケーションを使用しています。

私のメイン ビューには、並べ替え可能なリストがあります。並べ替えは url パラメータで機能しますsortorder。並べ替えを変更できるドロップダウンは、次のような部分ビューにあります。

<div class="ui-select">
    <select name="sortSelect" id="sortSelect" data-mini="true">
        <option value="opt1">Option 1</option>
        <option value="opt2">Option 2</option>
        <option value="opt3">Option 3</option>
    </select>
</div>

次に、ドロップダウンが変更されたかどうかを確認するjQueryがあります。変更時に、新しいドロップダウン値で url パラメーターを追加または変更sortし、新しい url にリダイレクトします。

$(document).ready(function () {
    $('#sortSelect').change(function () {
        var sortOrder = $('#sortSelect').val();
        var url = document.URL;
        if (url.indexOf("sortorder=") > -1)
            url = url.replace(/sortorder=[^&]+/, "sortorder=" + sortOrder);
        else
            url = url + "&sortorder=" + sortOrder;
        window.location.replace(url);
    });
});

sortorder の前に他のパラメータがいくつかあるので、& で追加しても問題ありません。

ページが新しく読み込まれたときに URL から正しい値を設定するには、次の jQuery を使用します (関数 gup は URL から値を読み取ります)。

$('#sortSelect').ready(function () {
    var sortorder = gup('sortorder');
    if (sortorder != '')
        $('#sortSelect').val(sortorder);
}

問題があります。サイトを読み込んでsortorderドロップダウンを変更すると、これまでのところすべてが機能します。ページは、新しい url パラメータと新しくソートされたリストで新しく読み込まれます。ドロップダウン値も正しく設定されています (私はこれを で確認しましたalert($('#sortSelect').val()が、ドロップダウン テキストは古いものです。F5 を押すと、サイトが更新され、ドロップダウンに正しいテキストが表示されます...

問題を解決する方法はありますか? または、まったく問題は何ですか?

4

1 に答える 1

0

答えは自分で見つけました。予想どおり、次のように選択 (ドロップダウン) を更新する必要があります$("#sortSelect").selectmenu("refresh");

$('#sortSelect').ready(function () { 
    var sortorder = gup('sortorder'); 
    if (sortorder != '') $('#sortSelect').val(unescape(sortorder));
    $("#sortSelect").selectmenu("refresh");
}); 

時々、簡単な問題には時間がかかります ;)

于 2012-11-13T08:32:52.397 に答える