2009-07-11 54 views
7

我嘗試使用jQuery UI的標籤禁用標籤導航

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

但是禁用標籤導航,這也禁止我使用導航的流量鏈接:

$('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); 
    } 
}); 

理想的情況下,我會想要禁用當前標籤右側標籤的標籤導航,並確保我的< <上一個和下一個> >標籤導航按鈕始終有效。

有什麼建議嗎?

回答

2

您應該在第一次關閉時存儲一個標記,在您傳遞給$(document).ready的函數中,當您單擊下一個/上一個按鈕時將其設置爲true,並在顯示標籤時將其設置爲false,您只能通過使用按鈕來更改選項卡。

檢查this working sample和下面的代碼片段:

$(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,似乎有點凌亂 - 我希望有公司會是一個內襯可以輕鬆地添加/從標籤移除事件處理程序。只要prev/next鏈接正常工作(爲了簡化邏輯),我就可以禁用所有標籤頁。在.ui-tabs-nav類元素上使用選擇器並刪除點擊事件?這會起作用嗎? – cliveholloway 2009-07-11 07:47:11

8

您是否嘗試過event option設置的東西,不太可能被解僱(如果有的話)?

例如:

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

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

+1將它設置爲onchange可以正常工作,但空不了。無論如何,選項卡控件不會觸發onchange。 – jfrobishow 2010-07-07 19:38:18