2009-03-01 27 views
9

Tôi đang sử dụng thư viện jquery trong project.I của tôi có vấn đề khủng khiếp với jquery tabs.Solutions là khi tôi ở trong tab thứ ba, tôi post lại form, tab reloaded và chuyển đến tab đầu tiên. tôi đang tìm kiếm để giải quyết vấn đề thời gian dài.jquery tab postback problem

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#example > ul").tabs({ remote: true, cache: true }); 
    });  
</script> 

vậy làm thế nào tôi giải quyết vấn đề này? thx câu trả lời của bạn.

Trả lời

13

tab có thể sử dụng cookie để lưu trữ tab hiện tại. Hãy xem các tab documentation. Down trong Options liệt kê ở đó là một ví dụ về cách sử dụng cookie để lưu trữ các tab hiện tại:

$('.selector').tabs({ cookie: { expires: 30 } }); 

này đòi hỏi sự jquery cookies plugin để được bao gồm mặc dù.

+0

Đối với tôi, đây là giải pháp tốt nhất và dễ nhất để triển khai. Tôi có nhiều tab trên ba trang khác nhau và các tab duy trì trạng thái của chúng trên các nhấp chuột tab và đăng lại trang. Tuyệt vời. –

+0

Ahh, điều này trông giống như một giải pháp hoàn hảo cho vấn đề mà tôi gặp phải với các lượt xem trong tab ... thật không may, trang web jquery đã bị gỡ xuống do các cuộc tấn công spammer quảng cáo, đến các liên kết đến tài liệu tab và plugin cookie jquery hiện không khả dụng ... – Dronz

24

Bạn không nói rõ nếu bạn đang sử dụng ASP.NET, nhưng nếu bạn là bạn có thể lưu trữ các tab đang được chọn trong một asp <: HiddenField/> thay vì một cookie:

<script type="text/javascript" language="javascript"> 
    $(function() { 
     $("#example").tabs({ 
      show: function() { 
       var sel = $('#example').tabs('option', 'selected'); 
       $("#<%= hidLastTab.ClientID %>").val(sel); 
      }, 
      selected: <%= hidLastTab.Value %> 
     }); 
    }); 
</script> 
<asp:HiddenField runat="server" ID="hidLastTab" Value="0" /> 

Nếu không phải ASP.NET, bạn có thể có thể làm một cái gì đó tương tự.

+1

Giải pháp này hoạt động hoàn hảo cho tôi bằng ASP.net Cảm ơn! –

+0

Đây là một giải pháp tuyệt vời! –

+0

Tôi đã thử nhiều giải pháp khác không thành công. Điều này làm việc hoàn hảo. Cảm ơn bạn rất nhiều. –

0

tôi đã cùng một vấn đề, cố định bằng cách thêm dòng sau vào các tab jquery chọn xử lý sự kiện:

$("div.ui-tabs-panel").html(""); 

Nó có hiệu quả xóa tất cả tấm hiện có để ngăn chặn hình thức xếp chồng.

1

Tôi đã cố gắng sử dụng giải pháp được đăng bởi joelsand. Tuy nhiên, các tùy chọn và sự kiện trên tab jQuery đã thay đổi. Tài liệu hiện tại là http://api.jqueryui.com/tabs/.

Thay vì sự kiện "hiển thị", tôi đã sử dụng sự kiện "đã kích hoạt". Thay vì tùy chọn "đã chọn", tôi đã sử dụng tùy chọn "hoạt động". Thay vì một trường ẩn, tôi đã sử dụng biến JavaScript (được khai báo bên ngoài UpdatePanel)

+0

Tên sự kiện là ** kích hoạt ** (không phải "đã kích hoạt"). – fortboise