2009-07-11 12 views
7

próbowałem wyłączyć nawigację za pomocą tabulatoratabs jQuery UI nawigacji Zakładka wyłączyć

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

Jednak to wyłącza także łącza przepływu używam dla nawigacji:

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

Idealnie, ja chcesz wyłączyć nawigację po zakładkach dla kart z prawej strony bieżącej karty i upewnić się, że moje przyciski nawigacyjne na karcie z zakładką zawsze działają.

Wszelkie sugestie?

Odpowiedz

2

Powinieneś zapisać flagę na pierwszym zamknięciu, w funkcji, którą przechodzisz na $(document).ready, ustawić ją jako prawą, gdy klikniesz na przycisk next/prev, i powrócić do wartości false, gdy zakładka zostanie pokazana, wykonując to, będziesz mógł zmieniać zakładkę tylko za pomocą przycisków.

Sprawdź this working sample i następujący fragment kodu:

$(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, wydaje się nieco Messy - Miałem nadzieję, że nie będzie to jeden liner łatwo dodać/usunąć obsługi zdarzeń z kartami. Mógłbym żyć z wyłączonymi wszystkimi zakładkami tak długo, jak działają łącza prev/next (aby uprościć logikę). Użyj selektora w elementach klas .ui-tabs-nav i usuń zdarzenie kliknięcia? Czy to działa? – cliveholloway

8

Czy próbowałeś ustawiania event option do czegoś, co nie jest prawdopodobne, aby być zwolniony (jeśli w ogóle)?

Na przykład:

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

lub

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

Ustawienie +1 na onchange działa dobrze, puste nie. Szanse są takie, że kontrolka tabulacji i tak nie uruchomi zmiany. – jfrobishow