フリースタイルな携帯言語変換:フォーム入力モード
フォームの入力モードを内容に応じて自動で切り替える入力補助機能は、テンキーで操作する携帯サイトにとって使い勝手を大きく向上させるので、是非取り入れたいものです。生年月日や電話番号のように数字入力を要求しているのであれば、初めから数字入力モードになっていて欲しいものです。
指定方法はキャリアやXHTMLかHTMLかによって色々です。それにキャリア互換があるとかないとか、キャリアによって動作が合わないだとか、とにかくもう実にややこしいことになっています。
●HTML
ドコモ
→istyle属性を使う
値
- “1” :全角かな
- “2” :半角カナ
- “3” :英字
- “4” :数字
au
→istyle属性が使える。より細かく指定できるformat属性もある
format属性値
- “*A” :大英字・記号
- “*a” :小英字・記号
- “*N” :数字
- “*X” :大英字・数字・記号
- “*x” :小英字・数字・記号
- “*M” :全角かな
- “*x” :小英字
ソフトバンク
→mode属性を使う
値
- “hiragana” :全角かな
- “katakana” :全角カナ
- “hankakukana” :半角カナ
- “alphabet” :英字
- “numeric” :数字
●XHTML
ドコモ
→style属性に-wap-input-formatプロパティを指定する
プロパティ値
- "*<ja:h>" :全角かな
- "*<ja:hk>" :半角カナ
- "*<ja:en>" :英字
- "*<ja:n>" :数字
※istyleは使えない
au
→istyle属性が使える
ソフトバンク
→istyle属性が使える
※ドコモの-wap-input-formatに互換性があると言われているが、指定種類外の文字入力を一切受け付けない(入力初期設定ではなく入力制限の挙動をする)。
純粋にキャリアごとの細かい指定はさらに多くのパターンがあります。こうしたキャリアごとの違いには「全部書く」対処法がよく用いられますが、記述が長すぎるのでミスしやすく、現場としてはやっていられません。
またソフトバンクで-wap-input-formatを使うと入力制限の動作になり(指定文字種しか入力できず、切替も不可)、単純な併記は問題があります。つまり、こうした違いを吸収できるコンテンツを静的なファイルで作ることはできず、何らかのプログラムでキャリアと世代(XHTML or HTML)を判別し出し分ける処理が必要です。
では、どのように書ければ一番よいのか?考えてみると、
- 1つの書き方で全てにうまく通用する
- どうしても特殊な指定をしたい時も使える
そう、絵文字と似たような状況と言えます。つまり、なんでもいいから1つ書けばいい、となれば作る方は楽です。
仕様的には古いですが、istyle属性が指定する値も単純で一番簡単に書けそうなので、これを使うとします。それでも、au端末にはどうしても具体的に指定したいものがあればauのformat属性を使うなど相応しいものを選べればよいです。同様にソフトバンク端末特有の指定をしたければmodeを使ったりとページ内の混在もできれば対応が楽です。
●HTML
氏名(カナ)
生年月日
メールアドレス
ラウンドアバウトでは、実際こんな記述が可能であり、フリースタイルな書き方の1つの具体例となります。次の画面は、そのキャプチャーです(入力モードは分からないのですが…汗)。
●画面(docomo N905i)
→入力モードはそれぞれ氏名(カナ):半角カナ、生年月日:半角数字、メールアドレス:半角英小文字になります。
こんな書き方でもラウンドアバウトを通せば最適な入力モードに変換され、全ての端末でうまくいくようになります。