9

以下のように、aspxフォームにリストされたタブコントロールがいくつかあります

 <div id="tabs">
    <ul>

        <li><a href="#tabs-1">Tab A</a></li>
        <li><a href="#tabs-2">Tab B</a></li>
        <li><a href="#tabs-3">Tab C</a></li>

    </ul>
<div id="tabs-1"></div>
<div id="tabs-2"><asp:Button ID="someid" runat="server"/></div>
<div id="tabs-3"></div>
</div>

タブをマウスでクリックしたときのナビゲーションは、次のように行われます。

 <script type="text/javascript">
    $(function () {
        $("#tabs").tabs();

    });
</script>

さて、私の質問は、ポストバック後も選択したタブをそのまま維持するにはどうすればよいですか。たとえば、クリック時にポストバックを引き起こすボタンを含むタブ B を選択します。ポストバックが発生した後、タブ A は foucs を登録し、アジュベント操作のために手動でタブ B を選択する必要があります。

この問題を解決するのを手伝ってください。

4

4 に答える 4

5

指定されたCookieオプションを使用してタブを初期化します。 サンプル

$(function () {
   $("#tabs").tabs({ cookie: { expires: 30 } });
}); 

jQueryCookieプラグインが必要です。

于 2013-03-15T06:01:50.667 に答える
5

このコードはあなたを助けると思います...

<div id="tabs">
        <asp:HiddenField ID="hidtab" Value="0" runat="server" />
        <ul>
            <li><a href="#tabs-1">Tab 1</a></li>
            <li><a href="#tabs-2">Tab 2</a></li>

        </ul>

        <div id="tabs-1">
            <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_Click"/>
        </div>

        <div id="tabs-2">
            <asp:Button ID="Button2" runat="server" Text="Submit" OnClick="Button2_Click"/>
        </div>
    </div>

<script type="text/javascript">
        $(document).ready(function () {
            var st= $(this).find("input[id*='hidtab']").val();
            if (st== null)
                st= 0;
            $('[id$=tabs]').tabs({ selected: st});
        });
    </script>

protected void Button1_Click(object sender, EventArgs e)
{
    hidtab.Value = "0";
}

protected void Button2_Click(object sender, EventArgs e)
{
    hidtab.Value = "1";
}
于 2013-03-15T08:01:41.383 に答える
0

この投稿で行ったように、URL で追跡できます。次のコードは単なる例であり、もっとうまく実行できます。jquery ui tabsactiveのプロパティを使用しました。要素のインデックスで動作しますが、#hash での動作もテストされていない可能性があります。以下の例では、タブのインデックスを取得し、それをプロパティで使用しています。active

<div id="tabs">
    <ul>

        <li><a href="#tabs-1">Tab A</a></li>
        <li><a href="#tabs-2">Tab B</a></li>
        <li><a href="#tabs-3">Tab C</a></li>

    </ul>
<div id="tabs-1"></div>
<div id="tabs-2"><asp:Button ID="someid" runat="server"/></div>
<div id="tabs-3"></div>
</div>

<script type="text/javascript">
    $(function () {
        var tabsOpts = {}, 
            activeTab, activeTabIndex,
            urlCheck = doucment.location.href.split('#');

        // urlCheck is an array so when there is more then one result
        // there is a hash found in the URL
        if( urlCheck.length > 1 ) {
            activeTab = urlCheck[1];

            // getting the index from the link
            activeTabIndex = $("#tabs li a[href="+ activeTab +"]").index();

            // create new object options for the tabs
            tabsOpts = { active: activeTabIndex };
        }

        $("#tabs").tabs(tabsOpts)
        .find('li a').each(function() {
            // get URL from the tab href
            var href = $.data(this, 'href.tabs');
            // set URL with the href from your tab
            document.location = href;
        });
    });
</script>
于 2013-03-15T07:12:33.593 に答える
0

クライアント側のソリューション:

<script type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(IniciaRequest);
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
var currentTab;

function IniciaRequest(sender, arg) {
  var _Instance = Sys.WebForms.PageRequestManager.getInstance();

  if (_Instance.get_isInAsyncPostBack()) {
    window.alert("Existe un proceso en marcha. Espere");
    arg.set_cancel(true);
  }
}

function BeginRequestHandler(sender, args) {
  //Persiste el valor del indice del TAB actual del control Jquery para mantener el tab actual seleccionado luego del Postback.
  if ($get('hdCurrentTab') != null) {
    currentTab = $get('hdCurrentTab').value;
  }
  //----
}

function EndRequestHandler(sender, args) {
  //Permite visualiza el control JQuery TAB dentro de ventanas modales AJAX.
  if (sender._postBackSettings.panelsToUpdate != null) {
    $("#tabs").tabs();

    //Persiste el valor del indice del TAB actual del control Jquery para mantener el tab actual seleccionado luego del Postback.
    if ($get('hdCurrentTab') != null) {
      $get('hdCurrentTab').value = currentTab;
      $("#tabs").tabs({ active: currentTab });
    }
    //----
  }
  //----
}
</script>

ページ上の HTML:

<input id="hdCurrentTab" type="hidden" value="0" />
<div id="tabs" style="width:97%;margin: auto; font-family: verdana, tahoma, arial, sans-serif; font-size: 11px;">
  <ul>
    <li><a href="#tabs-1" onclick="$get('hdCurrentTab').value = '0';">TAB1</a></li>
    <li><a href="#tabs-2" onclick="$get('hdCurrentTab').value = '1';">TAB2</a></li>
  </ul>
  <div id="tabs-1"></div>
  <div id="tabs-2"></div>
</div>

TAB は、ポストバック後も選択されたままになります。

于 2016-03-03T15:57:51.863 に答える