2010-09-15 76 views
17

我使用jQuery选项卡和ASP.NET列表视图来显示和编辑一些信息。我的问题是,当用户在一个列表视图项中插入一条新记录时,我的jQuery选项卡会返回到第一个选项卡。有没有一种方法可以跟踪我正在使用哪个标签,或者不让它在邮寄后休息?保留在当前jQuery选项卡跨后发布?

+0

我怎样才能实现这个我的代码,请.. https://开头计算器。com/q/48215218/4233410 – 2018-01-12 09:57:54

回答

29

在asp.net你可以在一个隐藏字段将其存储,而无需使用Cookie(不需要jQuery的饼干参考)。

使用此:

$(function() { 
    $("#tabs").tabs({ 
     activate: function() { 
      var selectedTab = $('#tabs').tabs('option', 'active'); 
      $("#<%= hdnSelectedTab.ClientID %>").val(selectedTab); 
      }, 
     active: <%= hdnSelectedTab.Value %> 
    }); 
}); 

然后在身体里,声明你的隐藏选项卡字段:

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

基本上,在标签的选择要存储隐藏在ASP中选择标签值领域。然后显示你正在检索的价值。

+1

仅供参考,在较新版本的jQuery UI中,'show' /'selected'不再适用。相反,使用'activate'和'active'。 – 2014-01-15 04:11:11

+2

更好地用active:$(“#<%= hdnSelectedTab.ClientID%>”)。val()替换代码:active:<%= hdnSelectedTab.Value%>。否则在使用UpdatePanel时会遇到问题。 – ZooZ 2015-01-27 11:39:44

+1

用'选项','活动'和使用活动:'(“#<%= hdnSelectedTab.ClientID%>”)。val(),如@ZooZ所述, 。 – 2015-06-12 14:27:11

0

你可以通过这样获得当前标签:

var selected = $tabs.tabs('option', 'selected'); 

然后,您可以这样选择选项卡(POST完成时):

$tabs.tabs('select', selected); 

注意选项卡选择基于0的索引,因此选择2表示选择第三个选项卡。

0

我不是一个.NET家伙,但你可能会钩住表单的submit()事件,并使用表单数据将当前活动的选项卡发送到服务器。用这种方式,当你真正生成DOM和JS时,你可以简单地在服务器端选择适当的选项卡。

喜欢的东西...

$("#the_form").submit(function(){ 
    var $form   = $(this); 
     selected_tab_idx = $("#the_tabs").tabs("option", "selected"); 
    $('<input />', {type: hidden, name: 'tab_index', value: selected_tab_idx}).appendTo($form); 
    return true; 
}); 
29

使用jQuery和jQuery UI的新版本,这将是:

$(function() { 
     $("#tabs").tabs({ 
      activate: function() { 
       var selectedTab = $('#tabs').tabs('option', 'active'); 
       $("#<%= hdnSelectedTab.ClientID %>").val(selectedTab); 
      }, 
      active: document.getElementById('<%= hdnSelectedTab.ClientID %>').value 
     }); 
    }); 

的“选择”选项“活跃”取代...... Ofcourse你仍然需要添加隐藏字段:

<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" /> 
+3

这对我有用(jQuery-UI v1.10.2) – mghaoui 2013-05-30 07:52:54

+0

这对我很好用 – JIKKU 2014-02-12 07:10:35

+0

为我工作(查询v1.9.0) – Bachask8 2014-05-15 15:02:15

1

该解决方案为我工作:源http://saradesh.com/tajuddin/index.php/keep-the-selected-jquery-tab-active-on-partial-post-back-in-asp-net/

<script type="text/javascript"> 
     var selTab; 
     $(function() { 
      var tabs = $("#tabs").tabs({ 
       show: function() { 
        //get the selected tab index 
        selTab = $('#tabs').tabs('option', 'selected'); 

       } 
      }); 

     }); 

    function pageLoad(sender, args) { 

     if (args.get_isPartialLoad()) { 

      $("#tabs").tabs({show: function() { 
        //get the selected tab index on partial postback 
        selTab = $('#tabs').tabs('option', 'selected'); 

       }, selected: selTab }); 

     } 
    }; 

    </script> 
2

尝试这样的:

添加到页面:

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

添加到脚本:

$(function() { 
    var activeIndex = parseInt($get("hdnSelectedTab").value); 
    $("#tabs").tabs({ 
     active: activeIndex, 
     activate: function (event, ui) { 
      $get("hdnSelectedTab").value = ui.newTab.index(); 
     } 
    }); 
}); 
+0

我认为使用$(“#<%= hdnSelectedTab.ClientID%>”)更好 – 2016-12-03 00:02:27

相关问题