2

フォームが送信されて get にリダイレクトされたときにどのタブがオンになっていたかを jquery-tabs に記憶させる方法を見つけようとしています。たくさんの例を見つけましたが、それらはすべてイベントで使用するように言われてui.indexおりselect、どちらもドキュメントにはありません。ui.indexあれはそのオブジェクトの一部ではないことを確認しました。イベントで使用$("#MyTabs").tabs("option", "selected")すると、activate以前に選択されたタブのインデックスが取得されますが、ユーザーが選択したばかりのタブは取得されません。同様に、タブ 0 を選択してタブ 3 をクリックすると、3 ではなく 0 が返されactiveます。インデックスがわからないと、このオプションを使用できません。

jqueryがタブに変換している順序付けられていないリストのリスト項目を数えてから、それらを使用してdiv IDからマップするui.newPanel必要がありますか、それとももっとエレガントな方法がありますか? 適切なインデックスを取得したら、おそらくそれをクエリ文字列に追加します。ユーザーが複数のウィンドウまたはブラウザーのタブを開いている場合、Cookie ソリューションは適切ではありません。

edit :問題は、activeオプションがインデックスを取ることuiですが、イベントのパラメーターは、タブとタブのコンテンツの要素と要素activateのみを提供するようです。以前は物件があったので、何か足りないのではないかと思っています。lidivui.index

編集:Kushのおかげで私が使用したソリューションは次のとおりです。簡潔にするために一部のコードを省略しました。

function Document_OnReady() {
    $("#MyTabs").tabs({
        active: $("input.InitialTabIndex").val()
    });

function SetInitialTab() {
    $("input.InitialTabIndex").val($("#MyTabs").tabs("option", "selected"));
}

function Form_OnSubmit() {
    SetInitialTab();
}

サーバーが POST を処理するとき、フォームの値を読み取り、get にリダイレクトするときにクエリ文字列に追加します。

ありがとう!

4

4 に答える 4

1

非表示フィールドを作成します。いずれかのタブをクリックしたときに、その非表示フィールドにタブインデックスを保持しておくと、次回はページをリダイレクトしても問題ありません。非表示フィールドフォーム要素を使用して、ページをリダイレクトできます。

$('#hidden_field').val($tabs.tabs('option', 'selected'));
于 2012-12-19T13:38:43.957 に答える
1

これを試して:

<div id="selector" class="ui-mainColTabs">
    <ul>
        <li><a href="#tabs-1">Tab 1</a></li>
        <li><a href="#tabs-2">Tab 2</a></li>
    </ul>
    <div id="tabs-1"></div>
    <div id="tabs-2"></div>
</div>

<form id="form">
    <input type="submit" value="Kill" />
</form>

<a href="#" id="getCookie">Get</a>

<script type="text/javascript">
<!--
$(document).ready(function() {
    $("#selector").tabs({
        cookie: {
            name: 'tab_cookie',
            expires: 7
        }
    });


    $('#getCookie').click(function() {
        alert($.cookie('tab_cookie'));
    });

    $('#form').submit(function() {
        alert($.cookie('tab_cookie'));
    });
});
//-->
</script>

ここからjQuerycookieファイルを追加する必要があります

于 2012-12-19T13:38:46.680 に答える
1

一般に、サーバー側のコードは、選択した要素にクラス名を追加し、ページをブラウザーに吐き出します。

于 2012-12-18T21:41:59.827 に答える
0

データの記憶は

jQuery.data('key', data);
于 2012-12-19T13:35:58.700 に答える