在post后面保留当前的jQuery选项卡?

我使用jQuery选项卡和ASP.NET列表视图来显示和编辑一些信息。 我的问题是,当用户在其中一个listview项中插入新记录时,我的jQuery选项卡会返回到第一个选项卡。 有没有办法跟踪我在哪个标签上或保持它不在后面?

在asp.net中,您可以将其存储在隐藏字段中,而无需使用cookie(不需要jquery cookie引用)。

用这个 :

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

然后在正文中,声明隐藏的标签字段:

  

基本上,在选择选项卡时,您将选中的选项卡值存储在asp隐藏字段中。 然后显示您正在检索该值。

随着更新版本的jQuery和jQuery ui,这将是:

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

‘selected’选项被’active’替换…当然,您仍然需要添加隐藏字段:

  

内置支持 jQuery cookie插件 ( 直接下载 )。 你这样使用它:

 $("#tabs").tabs({ cookie: { expires: 7 } //1 week }); 

它与保持跨回发不一样,但它通常提供所需的效果。

试试这个:

添加到页面:

  

添加到脚本:

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

这个解决方案对我有用:来源http://saradesh.com/tajuddin/index.php/keep-the-selected-jquery-tab-active-on-partial-post-back-in-asp-net/

  

您可以通过执行以下操作获取当前选项卡:

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

然后,您可以通过执行以下操作选择选项卡(完成POST后):

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

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

我不是.NET的人,但您可以挂钩表单的submit()事件,并使用您的表单数据将当前活动的选项卡发送到服务器。 以这种方式,您可以在实际生成DOM和JS时在服务器端选择适当的选项卡。

就像是…

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