スマートフォンにおけるHTML5対応状況 (2) input typeについて

今回はマニアックにinputタグについて掘り下げようかと。

html5からinputタグのtype属性が大量に追加されています。

今までは

  • type="checkbox"
  • type="radio"
  • type="image"
  • type="text"
  • type="password"

なんかを使っていたと思いますが、html5では

  • type="tel"
  • type="url"
  • type="number"

など、内容に合わせた専用のtype属性が用意されています。
これで id="tel" とか id="url" なんて指定がいりません。

ただ、当然ブラウザごとに対応状況が違います。
せっかくのスマートフォンブログなので、iPhoneXperiaでの対応状況を調べてみました。

iPhoneiOS AndroidXperia
対応
可否
入力モード 対応
可否
入力モード
type="checkbox"
type="radio"
type="file" × ×
type="submit"
type="image"
type="reset"
type="button"
type="text" 英字 日本語
type="password" 英字
(言語切替無し)
英字(テンキー)
type="tel" テンキー 日本語
type="search" 英字 日本語
type="url" 英字(.comあり) 日本語
type="number" 数字 日本語
type="email" 英字(@あり) 日本語
type="datetime" 英字 日本語
type="date" 英字 日本語
type="week" 英字 日本語
type="month" 英字 日本語
type="time" 英字 日本語
type="datetime-local" 英字 日本語
type="range" 英字 日本語
type="color" 英字 日本語

共通仕様

  • type="search" を使ってもSafariChromeのようなWebkitブラウザの検索窓のデザインになりません。もしかしたら未対応なのかもです。

それにつられてautocomplete / datalist属性も無効

iPhone

  • autocorrect:スペルチェック機能。英文入力のみをする箇所(どんな??)以外はoffでいいかと。特にログインIDなどを入れる箇所ではoffにしとかないとウザイかも
  • autocapitalize:先頭文字が大文字になる処理。これがonになっていると先頭文字入力時のみShiftキーが押されている。英文を書かない限りはこの処理は邪魔になるので、デフォルトoffを指定していいかも
    ちなみに text / search / url / email あたりがこのモード。url / emailではかなり邪魔な処理なのでoffにするのを忘れずに設定しましょう。
  • placeholderは積極的に利用
  • autofocusは未対応なのでJSで対応が必要
    $('#foo input:first-child').focus();
    みたいなね。
入力モードの切替

periaと一番の違いとして、入力モードがtypeによって切り替わります。
切り替わるモードについては表参照。

入力モードが切り替わるのは、type="password" / type="number" / type="tel" の3種類。

標準時は英字のQWERTYキーモードですが、一度日本語のテンキーモードに切り替えると、type="tel"などで一度数字入力モードに切り替わっても他のフォームにフォーカスすれば元のテンキーモードに切り替わります。
ただ、type="password" は強制的に英字モードに移行後、他のフォームに戻ってもQWERTYキーモードのまま。テンキーモード愛好者にはツライ仕様ですね。
type="password" の項目を最後に持ってきたりすると、ちょっと親切かも。

蛇足

左上の「次へ」ボタンを押すと、PCでのTabキーのように次のフォームへ自動で移動してくれます。そうするとモードによって微妙に「123」「言語切替」キーの場所が左にずれたり、「Shift」キーの矢印が小さくなったりするようです。これってバグ?もしくは内部的には入力モードが切り替わってる?

Xperia

  • placeholder:挙動が若干おかしいようです。ロード直後は正常に動作するんですが、何回かフォーカスを続けるとvalue値に設定されているような挙動。今回はAndroidのみ振り分けて非表示にしました。
  • autofocus:対応しています。iPhoneのためにJS対応をしないならば、入れておいてもいいかも