jQuery Mobileのウィジェットの1つであるラジオボタン(複数の選択肢から1つだけ選べるボタン)を、javascriptのコードで操作する方法。
- ラジオボタンをマークアップする
<!-- HTML -->
<div data-role="fieldcontain">
<fieldset data-role="controlgroup" data-type="horizontal">
<legend>Broadcast:</legend>
<input type="radio" name="radioBroadcast" id="radioBroadcast1" value="-" checked="checked" />
<label for="radioBroadcast1">-</label>
<input type="radio" name="radioBroadcast" id="radioBroadcast2" value="twitter" />
<label for="radioBroadcast2">tw</label>
<input type="radio" name="radioBroadcast" id="radioBroadcast3" value="facebook" />
<label for="radioBroadcast3">fb</label>
<input type="radio" name="radioBroadcast" id="radioBroadcast4" value="twitter,facebook" />
<label for="radioBroadcast4">tw+fb</label>
</fieldset>
</div>
- input要素にtype=”radio”を指定する(個々の項目にidを付けておく)
- label要素で各項目の表示名を指定する(for属性でidを指定してinput要素と紐付ける)
- legend要素でラジオボタンの説明(タイトル)を指定する
- (同じ)グループのラジオボタンをfieldset属性で囲む。その際 data-role=”controlgroup”とする
- data-role=”fieldcontain”属性のコンテナで囲むことで見栄えが調整される
valueで指定する内容がコードで取得する値になる。
(同じ)グループのラジオボタンには同じnameを付けておく。(上記ではradioBroadcast)
data-type=”horizontal”とするとボタンが横方向に並ぶ。
legendの直後で改行されず、1行節約される
// JavaScript
// 'radioBroadcastという名前がついたinput要素'のなかでチェックされている項目の値を取得
$('input[name=radioBroadcast]:checked').val()
// JavaScript
function setRadioBroadcast(v){
$('input[name=radioBroadcast]').val([ v ]); // 配列として設定する
$('input[name=radioBroadcast]').checkboxradio('refresh');
// $('input[name=radioBroadcast]').val([ v ]).checkboxradio('refresh'); でも可
}
