2009-07-11 39 views
7

tôi đã cố gắng để vô hiệu hóa tab điều hướng sử dụngjQuery UI tab disable tab menu

var $tabs = $("#tabs").tabs({ 
    select: function(event, ui) { return false; } 
}); 

Tuy nhiên, điều này cũng sẽ vô hiệu hóa các liên kết dòng chảy Tôi đang sử dụng để điều hướng:

$('input.nexttab').click(function() { 
    var tab_num = $tabs.tabs('option', 'selected'); 
    // error check this tab before proceeding 
    if (check_tab(tab_num)) { 
     $tabs.tabs('select', tab_num + 1); 
    } 
}); 

Lý tưởng nhất, tôi muốn muốn tắt điều hướng tab cho các tab ở bên phải tab hiện tại và đảm bảo các nút điều hướng tab < < trước và tiếp theo > > tab điều hướng luôn hoạt động.

Mọi đề xuất?

Trả lời

2

Bạn nên lưu trữ cờ trên lần đóng đầu tiên, trong chức năng bạn chuyển đến $(document).ready, đặt đúng khi các nút tiếp theo/trước được nhấp và đặt trở lại sai khi tab được hiển thị bằng cách làm như vậy, bạn sẽ chỉ có thể thay đổi tab bằng cách sử dụng các nút.

Kiểm tra this working sample và đoạn mã sau:

$(document).ready(function(){ 
    var allowTabChange = false; 
    var $myTabs = $("#tabs"); 

    $myTabs.tabs({ 
        select: function(event, ui) { return allowTabChange; }, 
        show: function(event, ui) { allowTabChange = false; }, 
       }); 

    $('#nextButton').click(function(){offsetTab(1);}); 
    $('#prevButton').click(function(){offsetTab(-1);}); 

    // Helper functions 

    function offsetTab(offset){ 
    var tab_num = $myTabs.tabs('option', 'selected'); 
    var nextTab = tab_num + offset; 

    if (check_tab(nextTab)) { 
     allowTabChange = true; 
     $myTabs.tabs('select', nextTab); 
    } 
    } 

    function check_tab(tab_num){   
    return tab_num >= 0 && tab_num < $myTabs.tabs('length'); 
    } 
}); 
+1

Hmmmm, dường như một chút lộn xộn - Tôi đã hy vọng có của sẽ là một lót để dễ dàng thêm/gỡ bỏ các xử lý sự kiện từ các tab. Tôi có thể sống với tất cả các tab bị vô hiệu hóa miễn là các liên kết trước/tiếp theo hoạt động (để đơn giản hóa logic). Sử dụng bộ chọn trên các phần tử lớp .ui-tabs-nav và xóa sự kiện nhấp? Liệu điều đó có hiệu quả? – cliveholloway

8

Bạn đã cố gắng thiết lập event option để cái gì đó không có khả năng bị sa thải (nếu có)?

Ví dụ:

$('#tabs').tabs({ event: 'change' }); 

hoặc

$('#tabs').tabs({ event: '' }); //probably better 
+1

+1 thiết lập nó để onchange hoạt động tốt, trống không mặc dù. Tỷ lệ cược là điều khiển tab sẽ không kích hoạt onchange. – jfrobishow

Các vấn đề liên quan