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 其他一些示例可能有效更好的。提前致谢, Laziale

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

听起来你想要我昨天解决这个问题时想要的两件事:(1)指定起始选项卡的能力,以及(2)控制从页面回发后打开哪个选项卡。一种方法:在 .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 就绪函数根据隐藏字段的值告诉要显示哪个选项卡:

    $(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 回答