2009-07-11 19 views
7

ho cercato di disattivare la navigazione scheda utilizzandoschede jQuery UI scheda disabilitare la navigazione

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

Tuttavia, questo disabilita anche i link di flusso che sto utilizzando per la navigazione:

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

Idealmente, mi piacerebbe si desidera disabilitare la navigazione delle schede per le schede a destra della scheda corrente e assicurarsi che il mio < < prev e i successivi pulsanti di navigazione scheda > > funzionino sempre.

Qualche suggerimento?

risposta

2

È necessario memorizzare un flag sulla prima chiusura, nella funzione si passa a $(document).ready, impostarlo su true quando si fa clic sui pulsanti next/prev e su false quando viene visualizzata la scheda, così facendo, Sarai solo in grado di cambiare scheda usando i pulsanti.

Controllare this working sample e il seguente frammento di codice:

$(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, sembra un po 'disordinato - Speravo ci sia sarebbe un uno di linea di aggiungere facilmente/rimuovere il gestore di eventi dalle schede. Potrei vivere con tutte le schede disabilitate fintanto che i link prev/next funzioneranno (per semplificare la logica). Utilizzare un selettore sugli elementi della classe .ui-tabs-nav ed eliminare l'evento click? Funzionerebbe? – cliveholloway

8

Hai provato impostando la event option a qualcosa che non è suscettibile di essere licenziato (se non del tutto)?

Per esempio:

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

o

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

+1 impostandolo su onchange funziona bene, vuoto però. Le probabilità sono che il controllo di tabulazione non licenzierà comunque un onchange. – jfrobishow

Problemi correlati