入力フォームを数字キーボードに設定するには?
フィーチャーフォンでは、フォームでテキストを入力する際の文字入力モードをHTMLの属性(istyle=”4″など)で指定できる。文字入力モードは「ひらがな」「カタカナ」「英字」「数字」のように文字種を指定できるから、入力モード切替が煩わしい携帯では切り替えの手間が省け、ユーザビリティが良くなる。
ではスマートフォンは入力モードに対応しているか?いや、Androidに搭載されたブラウザは標準HTML準拠だからダメに違いない・・・。そう思ってあきらめていた。
が、調べてみるとAndroidブラウザでも数字モードに設定する方法があった。
関連記事:
- maxlengthで半角文字数で制限するには?
- iPhone向けSafari、HTML拡張属性を使いこなす
- 画像をピッタリ横並び表示させるテクニック
- スマートフォンのラジオボタンを使いやすいサイズにするには?
- スマホ向けページャデザイン 3選
AndroidはHTML5に一部対応している
Android端末に搭載されたブラウザはHTML4だけではなく、仕様策定中のHTML5にも一部対応している。
そしてHTML5のinput要素では、type属性が拡張され、type=”tel”やtype=”email”といった指定ができるようになっている。
input要素のtype属性 | データ型 | コントロール |
---|---|---|
type=”hidden” | 任意文字列 | なし |
type=”text” | 改行なしテキスト | テキストフィールド |
type=”search” | 改行なしテキスト | 検索フィールド |
type=”tel” | 改行なしテキスト | テキストフィールド |
type=”url” | 絶対URL | テキストフィールド |
type=”email” | メールアドレスもしくはメールアドレスのリスト | テキストフィールド |
type=”password” | 改行なしテキスト | マスクされたテキストフィールド |
type=”datetime” | タイムゾーンあり日付と時刻(年月日時分秒) | 日付と時刻コントロール |
type=”date” | タイムゾーンなし日付(年月日) | 日付コントロール |
type=”month” | タイムゾーンなし年月 | 月コントロール |
type=”week” | タイムゾーンなし年間の週番号 | 週コントロール |
type=”time” | タイムゾーンなし時刻(時分秒) | 時刻コントロール |
type=”datetime-local” | タイムゾーンなし日付と時刻(年月日時分秒) | 日付と時刻コントロール |
type=”number” | 数値 | テキストフィールド又はスピナーコントロール |
type=”range” | 数値 | スライダーコントロール |
type=”color” | 8ビットRGBカラー | カラーコントロール |
type=”checkbox” | リスト内の0個以上の値 | チェックボックス |
type=”radio” | 列挙型 | ラジオボタン |
type=”file” | 0個以上のファイル | ラベルとボタン |
type=”submit” | 列挙型 | ボタン |
type=”image” | 座標 | 押せる画像、又はボタン |
type=”reset” | なし | ボタン |
type=”button” | なし | ボタン |
ちなみにinput要素にはpattern属性が新設され、正規表現でヴァリデーションパターンを指定する機能もある。
HTML5で数字入力モードを指定する
ここで数字入力になりそうな属性を指定し、実機で確認してみた(画面はXperia arc)。
タグ記述 | Xperia arc | ISW11HT | 003SH |
---|---|---|---|
<input type=”tel”> | 数字 | 数字 | 数字 |
<input type=”number”> | 数字 | 数字 | 数字 |
<input type=”range”> | 非表示 | 非表示 | 非表示 |
<input type=”text” pattern=”[0-9]{8}”> | 日本語 | 日本語 | 日本語 |
すると数字入力モードに切り替わるのは、type属性にtelやnumberを指定したときだった。Xperia arcだとキーボードの配列が電話用に切り替わる。
一方、type=”range”の場合はコントロール自体が非表示となり、Androidでは対応していないようだ。type=”text”でpattern属性を指定した場合は日本語入力モードのままだった。
関連記事: