2009-07-11 18 views
7

jQueryのUIタブでタブのナビゲーションを無効にする

を使用してタブのナビゲーションを無効にしようとしましたが、これもナビゲーション用に使用しているフローリンクを無効にしています:

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

理想的には、現在のタブの右に移動し、< < prevとnext > >タブナビゲーションボタンが常に機能するようにします。

何か提案がありますか?

答えて

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

うーむは、少し厄介なようだ - 私はあります期待していたことは簡単にタブからイベントハンドラを追加/削除するには1つのライナーだろう。前/次のリンクが機能している間は、すべてのタブを無効にしてライブを行うことができます(ロジックを簡略化するため)。 .ui-tabs-navクラス要素のセレクタを使用して、クリックイベントを削除しますか?それは働くだろうか? – cliveholloway

8

は、あなたが(すべてであれば)解雇される可能性が低いものにevent optionを設定しようとしたことがありますか?例えば

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

または

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

+1それをonchangeに設定すると、うまく動作しますが、空ではありません。奇妙なことは、タブコントロールは、とにかくオンチェンジを起動しないということです。 – jfrobishow

関連する問題