2

asp.netにjqueryUIタブがあります。すべて正常に動作しますが、デフォルトでは最初のタブが開いています。モーダルポップアップでいくつかのコードを実行しています。ユーザーがアクションボタンをクリックすると、ポップアップがトリガーされたタブにポストバックが表示されます。これは jquery ui タブ コードです。

<ul>
    <li><a href="#tabs-1">Tab1</a></li>
    <li><a href="#tabs-2">Tab2</a></li>
    <li><a href="#tabs-3">Tab3</a></li>
  </ul>
  <div id="tabs-1">   
  </div>
  <div id="tabs-2">           
  </div>
  <div id="tabs-3">  
  </div>

たとえば、クエリ文字列に mypage.aspx?tab=1 または mypage.aspx?tab=2 がある場合、ページが読み込まれたときにデフォルトで開くタブを選択する方法を知りたいです。より良い。前もって感謝します、 ラツィアーレ

4

2 に答える 2

3

この質問getParameterByNameの関数を使用して、値を取得します。

function getParameterByName(name)
{
  name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
  var regexS = "[\\?&]" + name + "=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(window.location.search);
  if(results == null)
    return "";
  else
    return decodeURIComponent(results[1].replace(/\+/g, " "));
}

次に、次のようなことを行います。

$("#tabs").tabs({
    create: function(event, ui){
       var index = parseInt(getParameterByName("tab"));
       $(this).tabs("option", "active", index);
    }
}); 

これがお役に立てば幸いです。ご不明な点がありましたらお知らせください。

リンク:

于 2013-01-28T19:44:08.213 に答える
0

昨日この問題を解決したときに私が望んでいた 2 つのこと、(1) 開始タブを指定する機能、および (2) ページからのポストバック後にどのタブを開くかを制御する機能が必要なようです。1 つの方法: .aspx に隠しフィールドを含めます。

<asp:HiddenField runat="server" ID="hfLastTab" Value="0" />

(何も指定されていない場合、最初/0番目のタブがデフォルトであると仮定します)。Page_Load() で、!Page.IsPostBack ブランチを提供してクエリ文字列パラメーターを解析し、隠しフィールドの値を設定します。

    if (!Page.IsPostBack) {
        string pat = @"t=(\d)";
        Regex r = new Regex(pat, RegexOptions.IgnoreCase);
        Match m = r.Match(Request.Url.Query);
        if (m.Success) hfLastTab.Value = m.Groups[0].ToString();
    }

最後に、jQuery の ready 関数は、hiddenfield の値に基づいて、どのタブを表示するかを指示します。

    $(function () {
        $("#tabs").tabs({ active: <%= hfLastTab.Value %> });
    });

同様に、サーバー側のポストバック処理コードは、hfLastTab.Value を適切なインデックスに設定できます。モーダル ポップアップが複数のタブで呼び出される可能性があり、どのタブを開きたいかコントロールでわからない場合は、もう少し作業を行う必要があります。同様の質問への回答から、jQuery で「アクティブ化」関数を指定すると、ユーザーがタブを選択したときに hiddenField 値が設定されます。これは、ポストバックから読み取ることができます。

$("#tabs").tabs({
    activate: function() {
        var selectedTab = $('#tabs').tabs('option', 'active');
        $("#<%= hfLastTab.ClientID %>").val(selectedTab);
    },
    active: <%= hfLastTab.Value %>
});
于 2015-04-10T18:34:04.167 に答える