タブは、簡単にウィザードのようなインタフェースを作るために使用することができます。 次の例では、ペイン間を移動するのにタブ APIを用いた、次へ/前へ ボタンを使用しています。 また、チェックボックスを設けており、ユーザは次のペインに進みたい場合、チェックしなければなりません。
また、ウィザードを使用するときには、exposing effect 参照できます。 この手のタスクにユーザのフォーカスを移動するための効果的な方法です。
ルート要素として、"wizard" という id を持つ div タグを持っていますが、 それ以外は 最小限のセットアップ に同じです。
<!-- ウィザードのルート要素 --> <div id="wizard"> <!-- tabs --> <ul class="tabs"> <li><a href="#" class="w2">Personal info</a></li> <li><a href="#" class="w2">Shopping basket</a></li> <li><a href="#" class="w2">Review order</a></li> </ul> <!-- panes --> <div class="panes"> <div> .. the form .. </div> <div> .. the basket .. </div> <div> .. the order .. </div> </div>
この JavaScript コーディングは、カスタムの背景色(#789)による マスク 効果を可能にします。 この効果は、ルート要素がクリックされたときにアクティブになります。もちろん、この効果は任意であり、容易に取除くことができます。
// ウィザードのコンテナ取得と露出の初期化
var wizard = $("#wizard").expose({color: '#789', lazy: true});
// ウィザードの露出を可能にする
wizard.click(function() {
$(this).expose().load();
});
ここに、タブの設定があります。複雑さは、チェックボックスの動作で決まります。 前への移動を可能にする前に、ユーザが "条件"を受け入れるようにする必要があります。 トリックは、onBeforeClick イベント内で false を返すことです。
// wizard 内に含まれているタブを有効にする
$("ul.tabs", wizard).tabs("div.panes > div", function(event, index) {
/* 今、onBeforeClick イベントの中にいる */
// "条件"チェックボックスが選択さたことを確認する
var terms = $("#terms");
if (index > 0 && !terms.get(0).checked) {
terms.parent().addClass("error");
// false が返されたとき、ユーザは次のタブに進むことができないtab
return false;
}
// すべて OK。条件から赤のハイライトを削除する
terms.parent().removeClass("error");
});
ここは、ナビゲーションボタンのセットアップ方法です。 まず、APIへのハンドルを取得し、次にウィザード内に含まれているボタンへカスタムの click イベントを割り当てます。
// タブ APIへのハンドルを取得する
var api = $("ul.tabs", wizard).data("tabs");
// "次のタブ" ボタン
$("button.next", wizard).click(function() {
api.next();
});
// "前のタブ" ボタン
$("button.prev", wizard).click(function() {
api.prev();
});