サンプル1でひとまず「名前」欄を表示できましたが、ページの見出し(h2要素)とフォームの間には不自然な余白があり、入力フォームの背景色がやや暗いので、デザインを少し調整しましょう。head要素内に次のようなCSSを追加します。
フリップスイッチを表示する
続いて、jQuery Mobile独自のフォーム部品「フリップスイッチ」を使って「性別」の項目を作ります。フリップスイッチは2つの選択肢からどちらか一方を選択するUIです。select要素にdata-role属性「slider」を指定し、内側に2つのoption要素で項目を指定すると表示できます。
■サンプル4[HTML]
<div data-role="fieldcontain">
<label for="gender">性別</label>
<select name="gender" id="gender" data-role="slider">
<option value="男性">男性</option>
<option value="女性">女性</option>
</select>
</div>
サンプル4をスマートフォンで表示すると、指でボタンをタップして項目を選択できます。
 |
---|
jQuery Mobileで利用できるフリップスイッチ |
使いやすいチェックボックスの追加
最後に残った「お問い合わせ種別」は、チェックボックスを使いましょう。チェックボタンはスマートフォンで非常に使いにくいフォーム部品の1つですが、jQuery Mobileを利用すると指で選択しやすい形状に最適化できます。
チェックボックスは、type属性に「checkbox」を指定したinput要素で記述し、label要素でラベルと関連付けます。チェックボックス全体はdata-role属性に「controlgroup」を指定したfieldset要素で包み、fieldset要素の先頭にlegend要素で項目名(ここでは「お問い合わせ種別」)を記述します。
■サンプル5[HTML]
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<legend>お問い合わせ種別</legend>
<input type="checkbox" name="type1" id="type1" value="HP新規作成">
<label for="type1">HP新規作成</label>
<input type="checkbox" name="type2" id="type2" value="HPリニューアル">
<label for="type2">HPリニューアル</label>
<input type="checkbox" name="type3" id="type3" value="システム開発">
<label for="type3">システム開発</label>
<input type="checkbox" name="type4" id="type4" value="コンサルティング">
<label for="type4">コンサルティング</label>
</fieldset>
</div>
 |
---|
最適化したチェックボックス |
送信・キャンセルボタンの装飾
最後に、フォームの送信・キャンセルボタンを作ってフォームを完成させましょう。jQuery Mobileではスマートフォンで操作しやすいボタンのUIが用意されており、以下のように記述するだけで表示できます。
■サンプル6[HTML]
<input type="button" value="キャンセル">
<input type="submit" value="送信">
サンプル6をスマートフォンで開くと、以下のように最適化されたボタンが表示されます。
 |
---|
jQuery Mobileにより最適化されたボタン |
第2回で紹介したdata-theme属性を指定することでフォームのデザインテーマも変更できます(ただし、α4.1では不具合のためかデザインテーマが反映されません)。サンプル7はテーマ「b」を適用した状態です。
■サンプル7[HTML]
<input type="button" value="キャンセル" data-theme="b">
<input type="submit" value="送信" data-theme="b">
 |
---|
デザインテーマ「b」を適用させたボタン |
jQuery Mobileのボタンは通常、ページ幅いっぱいに表示されますが、data-inline属性に「true」を指定することで文字数にフィットしたボタンにもできます(サンプル8)。
■サンプル8[HTML]
<input type="button" value="キャンセル" data-theme="b" data-inline="true">
<input type="submit" value="送信" data-theme="b" data-inline="true">
 |
---|
文字数にフィットさせたボタン |
input要素にdata-icon属性を追加すると、それぞれのボタンにjQuery Mobileが用意したアイコンも表示できます。今回はサンプル9のように、キャンセルボタンに×アイコンを、送信ボタンに右矢印のアイコンを付けました。
■サンプル9[HTML]
<input type="button" value="キャンセル" data-theme="b" data-icon="delete" data-inline="true">
<input type="submit" value="送信" data-theme="b" data-icon="arrow-r" data-inline="true">
 |
---|
アイコンを追加したボタン |
以上で、お問い合わせページに必要なフォーム部品が揃いました。最後に今回紹介したフォーム部品をまとめて作ったページを確認しましょう。
■サンプル10[HTML]
<div data-role="page" id="contact" data-theme="b" data-back-btn-text="戻る">
<div data-role="header">
<h1>to-R</h1>
</div>
<div data-role="content">
<h2 class="h1">お問い合わせ</h2>
<form action="form.php" method="post">
<div data-role="fieldcontain">
<label for="name">名前</label>
<input type="text" id="name">
</div>
<div data-role="fieldcontain">
<label for="gender">性別</label>
<select name="gender" id="gender" data-role="slider">
<option value="男性">男性</option>
<option value="女性">女性</option>
</select>
</div>
<div data-role="fieldcontain">
<fieldset data-role="controlgroup">
<legend>お問い合わせ種別</legend>
<input type="checkbox" name="type1" id="type1" />
<label for="type1">HP新規作成</label>
<input type="checkbox" name="type2" id="type2" />
<label for="type2">HPリニューアル</label>
<input type="checkbox" name="type2" id="type3" />
<label for="type3">システム開発</label>
<input type="checkbox" name="type4" id="type4" />
<label for="type4">コンサルティング</label>
</fieldset>
</div>
<div data-role="fieldcontain">
<label for="textarea">お問い合わせ内容</label>
<textarea cols="40" rows="8" name="textarea" id="textarea"></textarea>
</div>
<input type="submit" value="キャンセル" data-theme="b" data-icon="delete" data-inline="true">
<input type="submit" value="送信" data-theme="b" data-icon="arrow-r" data-inline="true">
</form>
</div>
<div data-role="footer">
<h4>© 2011 to-R</h4>
</div>
</div>
これまで見てきたように、jQueryではマークアップの規則さえ覚えてしまえばスマートフォンに最適化されたサイトを簡単に作成できます。次回は、サンプル作成で紹介したjQuery Mobileの機能と、まだ触れていないそのほかの機能をまとめて紹介します。