チェックボックス
チェックボックスはリストから複数の値を選択させるために用いられます。従来のデスクトップPC上のチェックボックスは、jQuery Mobileのようにタッチに最適化されていませんでした。ここでは label 要素をチェックボックス全体にすることでタップ領域を大きくし、見た目にもクリックしやすくしています。独自のアイコンを設定することで、更に見た目をよくすることも出来ます。
以下に紹介するラジオボタンやチェックボックスは、通常の input/label としてマークアップされますが、よりタッチパネルに適した形に整形されます。スタイルが適用されるコントロールは、実際には input 要素の上に重ねられた label 要素です。もしブラウザの問題などで label を重ねることに失敗した場合、それでも元々のコントロールが表示されることになります。ほとんどのブラウザはでは label をクリックすることで繋がっている input の値が切り替えられますが、少数ながらそうでないブラウザも存在します。そうしたブラウザにもjQuery Mobileは対応しています。デスクトップPCでは、これらのコントロールはキーボードやスクリーンリーダーにも対応しています。チェックボックスに指定可能な属性についてはdata属性リファレンスを参照してください。
チェックボックスをひとつだけ作るなら input 要素に type=“checkbox” を指定し、対応する label を作ってやります。この時 label は for 属性で input 要素のIDとセマンティックにつなげられている必要があります。
これによって、次のように基本的なチェックボックスがつくられます。デフォルトで横幅は親要素いっぱいになります。
ラジオボタンでは label を各チェックボックスのテキストに使っているため、グループ全体の説明には filedset の legend を使うようお勧めします。
最後にこの fieldset 全体を data-role=“controlgroup” を指定した div で囲んでやります。
縦方向チェックボックスグループ
一般的にこのウィジェットは、質問のタイトルが書かれた下に複数のチェックボックスリストが並べられます。複数のチェックボックスをボタングループに見えるようにするため、フレームワークは自動的に余白を取り除いたり、角を丸くする位置を調整したりします。
横方向チェックボックスグループ
チェックボックスグループは、複数の値を選択するボタンとしても作成できます。たとえばワードプロセッサの書式で用いられる太字、斜体、下線の設定ボタンのような感じです。こうした横方向のチェックボックスグループを作るには data-type=“horizontal” を fieldset に追加してください。
フレームワークが label を float 状態にし、1行に横並びにします。チェックアイコンは非表示にされ、角を丸くする位置も調整されます。
オプション
チェックボックスは、次のようなオプションを持っています。
-
theme
string -
default: null, inherited from parent
ウィジェットの色(スウォッチ)を指定します。テーマで定義されたスウォッチをあらわすaからzまでのアルファベットが指定できます。デフォルトでは、個別に設定されない場合、親要素のスウォッチ指定を引き継ぐようになっています。このオプションはdata属性でも次のように表現できます:
data-theme="a"
$("input[type='checkbox']").checkboxradio({ theme: "a" });
メソッド
チェックボックスは、次のようなメソッドを持っています。
-
enable
使用不可状態のチェックボックスを使用可能にします。 -
$("input[type='checkbox']").checkboxradio('enable');
-
disable
チェックボックスを使用不可状態にします。 -
$("input[type='checkbox']").checkboxradio('disable');
-
refresh
カスタム要素の値を更新します。 -
JavaScriptからチェックボックスの値を操作した場合、この refresh メソッドを発行して見た目を更新する必要があります。
$("input[type='checkbox']:first").attr("checked",true).checkboxradio("refresh");
イベント
直接 input 要素イベントにバインドしてください。jQuery Mobileによる仮想的なイベント、もしくは change, focus, blur などのような標準的なJavaScriptのイベントにバインドできます。
$("input[type='checkbox']").bind( "change", function(event, ui) {
...
});
チェックボックスプラグインは、次のようなカスタムイベントを持っています。
-
create
チェックボックスが生成された際に発生します。 -
$("input[type='checkbox']").checkboxradio({ create: function(event, ui) { ... } });