時刻表の表示の際、上り・下り列車を選択的に表示する。選択にはjQuery Mobileの「チェックボックス」を利用する。似たウィジェットである「ラジオボタン」では、複数の選択肢から1つのオプションしか選べないが、チェックボックスは複数選択が可能。
- チェックボックスの基本
input要素で、type=”checkbox”を指定することでチェックボックスが作成される。複数の要素に同じnameを指定することで値の取得を容易にする。<!-- HTML --> <legend>Train Direction:</legend> <input type="checkbox" name="chkDirectionInbound" id="chkDirectionInbound"/> <label for="chkDirectionInbound">inbound</label> <input type="checkbox" name="chkDirectionOutbound" id="chkDirectionOutbound"/> <label for="chkDirectionOutbound">outbound</label>
チェックボックスが選択されているかは以下のように is(‘:checked’) で取得できる。(チェックされていればtrue, そうでなければfalse が得られる。) これ以外にattr()でも取得可能。
// JavaScript var ans = $('#chkDirectionInbound').is(':checked'); // checkされていたら'true'、checkされていなかったら'false' // hoge.is(':checked') // checkされていたら'checked'、checkされていなかったら'undefined' // hoge.attr('checked')
- 見た目を整形する
ひとかたまりのチェックボックスは、以下のようにcontrolgroupを形成し fieldsetで囲む。さらにfieldset を div要素で囲んでおく。
<!-- HTML --> <div data-role="fieldcontain"> <fieldset data-role="controlgroup" data-type="horizontal"> <!-- 水平に並べる --> <!-- checkbox --> </fieldset> </div>
// JavaScript function showStation(trains){ // 下り列車の表示 if ($('#chkTTStationDirOut').is(':checked')){ $('#lvTTStation').append('<li data-role="list-divider">Outbound</li>'); for (var i = 0; i < trains.length; i++) { if (trains[i].tr_direction == 'Kudari'){ // 列車データをHTMLに追加 } } } // 下り列車の表示 if ($('#chkTTStationDirIn').is(':checked')){ // 省略 } }
data-role=”list-divider” で表に「行見出し」を表示している。
// JavaScript $(this).on('change', 'input[name="chkTTStationDir"]', function(){ showStation( gCurRail.trains[ gCurLineMode ]); });