ビューティー - Beauty.UI.Places.Drilldown - by Recruit Web Service UI Library
「関東」「渋谷」「センター街」などの地域を選択する為のユーザーインターフェースを自動生成するモジュール。相互連動更新する、一般的なプルダウンUIを提供。
必要な選択肢情報を、必要なタイミングで動的に取得/生成する為、大量の地域マスタデータ等を事前に読み込む必要無く、快適なUIを提供する事ができます。
サービスエリアを選ぶと中エリアの選択肢が、中エリアを選ぶと小エリアの選択肢が、それぞれ該当地域のものに自動的に切り替わります。
コピペする事で手軽に再利用が可能なコード例はこちら
下記のように必要なファイルを読み込んだうえで...
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="recruit.ui.js"></script> <script type="text/javascript" src="beauty.ui.js"></script>
プルダウンを表示させたい場所にこのようなHTMLを書き...
<select id="bty-service-area-sel"></select>
<select id="bty-middle-area-sel"></select>
<select id="bty-small-area-sel"></select>
最後にこのようなjavascriptコードを書くことで任意のタイミングでプルダウンが自動生成されます。
Recruit.UI.key = 'ご自身のAPIキー'; new Beauty.UI.Places.Pulldown();
jQueryを使って、ページ表示と同時にプルダウン生成したい場合はこちら:
$(function (){
Recruit.UI.key = 'ご自身のAPIキー';
new Beauty.UI.Places.Pulldown();
});
ご自身のAPIキーをお持ちでない方はこちらの画面からリクルートWEBサービスに登録する事で取得する事ができます。
他のプルダウン系UIと同じく、コンストラクタの引数にパラメーターを与える事でオプション機能が利用できます。その際には以下の例に示すように、サービスエリア・中エリア・小エリア - 3つのプルダウンそれぞれが個別のパラメーター空間を持つ形になります。
デフォルトでは "bty-service-area-sel" 等のid値でHTML中のプルダウン(SELECTタグ)を探しにいきますが、これを任意のid値で指定したい場合は以下のように書きます:
new Beauty.UI.Places.Pulldown({
service_area: { id: 'my-sa' },
middle_area: { id: 'my-ma' },
small_area: { id: 'my-sma' }
});
いずれかひとつだけの指定ももちろん可能です。
以下のように指定する事で文言を変えられます:
new Beauty.UI.Places.Pulldown({
service_area: { first_opt_text: '選択してください' },
middle_area: { first_opt_text: '中エリアを選択してください' },
small_area: { first_opt_text: '小エリアを選択してください' }
});
このようにエリア・国・都市それぞれ個別に指定します。
実際の動作例:
各プルダウンに予め何らかの地域を最初から設定しておきたい場合は以下のように書きます:
new Beauty.UI.Places.Pulldown({
small_area: { val: 'X009' }
});
実際の動作例:
同様に service_area または middle_area を指定する事も可能です:
// 渋谷・青山・表参道・原宿をデフォルトに
new Beauty.UI.Places.Pulldown({
middle_area: { val: 'AD' }
});
// 関東エリアをデフォルトに
new Beauty.UI.Places.Pulldown({
service_area: { val: 'SA' }
});
小エリアコード 'X009' の名称は?この小エリアが属する中エリアやサービスエリアのコード値および名称は?などを調べるには以下のインスタンスメソッドを使います:
var places = new Beauty.UI.Places.Pulldown();
places.find_item_by_code({
small_area: 'X009',
callback: function ( itm ){
itm.name; // 青山・表参道
itm.code; // X009
itm.middle_area.name; // 渋谷・青山・表参道・原宿
itm.middle_area.code; // AD
itm.service_area.name; // 関東
itm.service_area.code; // SA
}
});
JSONP形式の通信にてWebサービスから情報を取得する為、上記の例のように引数 callback にて結果を処理するための関数を定義する形になります。
同様に service_area または middle_area で調べる事も可能です:
var places = new Beauty.UI.Places.Pulldown();
places.find_item_by_code({
middle_area: 'AD',
callback: function ( itm ){
itm.name; // 渋谷・青山・表参道・原宿
itm.service_area.name; // 関東
}
});
同メソッドで返されるオブジェクトの中身はBeauty Webサービスの各エリア・国・都市マスタAPIが返す単体レコードの中身と同一です。詳しくはこれらAPIのドキュメントを参照してください。
インスタンス生成時のオプション指定 - on_update_hook - を各要素ごとに指定することで、プルダウンの選択肢が刷新される度に任意の処理を実施できます。詳しくはこちらのドキュメントを参照してください。
Beauty.UI.Places.Pulldown({
service_area: {
on_update_hook: function (){ ... }
},
middle_area: {
on_update_hook: function (){ ... }
},
small_area: {
on_update_hook: function (){ ... }
}
});
各プルダウンごとの get_current_stat() メソッドにより、現在選択中の値や全選択肢のリスト等の便利情報を取得する事ができます。詳しくはこちらのドキュメントを参照してください。
var p = new Beauty.UI.Places.Pulldown(); var sva_stat = p.service_area.get_current_stat(); var ma_stat = p.middle_area.get_current_stat(); var sa_stat = p.small_area.get_current_stat();