Я использую вкладки jQuery и список ASP.NET для отображения и редактирования некоторой информации. Моя проблема в том, что когда пользователь вставляет новую запись в один из элементов списка, мои вкладки jQuery возвращаются к первой вкладке. Есть ли способ отслеживать, на какой вкладке я нахожусь, или не дать ей отдохнуть после сообщения?
Пребывание на текущей вкладке jQuery через сообщение назад?
Ответ 1
В ASP.NET вы можете хранить его в скрытом поле, не используя cookie (нет необходимости в ссылке на jQuery cookie).
Использовать этот:
$(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. Затем на шоу вы получаете значение.
Ответ 2
В более новых версиях 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'... Конечно, вам все равно нужно добавить скрытое поле:
<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />
Ответ 3
Там встроенная поддержка для jQuery cookie plugin (прямая загрузка). Вы используете его следующим образом:
$("#tabs").tabs({
cookie: { expires: 7 } //1 week
});
Это не то же самое, что поддерживать обратный вызов, но обычно он обеспечивает желаемый эффект.
Ответ 4
Попробуйте следующее:
Добавить на страницу:
<asp:HiddenField ID="hdnSelectedTab" runat="server" Value="0" />
Добавьте к script:
$(function () {
var activeIndex = parseInt($get("hdnSelectedTab").value);
$("#tabs").tabs({
active: activeIndex,
activate: function (event, ui) {
$get("hdnSelectedTab").value = ui.newTab.index();
}
});
});
Ответ 5
Это решение сработало для меня: Source 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>
Ответ 6
Вы можете получить текущую вкладку, выполнив следующее:
var selected = $tabs.tabs('option', 'selected');
Затем вы можете выбрать вкладку (после завершения POST), выполнив следующее:
$tabs.tabs('select', selected);
Обратите внимание, что выбор табуляции - это индексирование на основе 0, поэтому выбор 2 означает выбор третьей вкладки.
Ответ 7
Я не парень .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;
});