ありがとう。また会おう。

まぁゆるりとやっていきますよと。

テキストボックスなどの初期入力文字種指定(istyle属性とか)

長らく携帯コンテンツ作ってるんだから、わかっているつもりだったんだけど、意外とわかってなかったんで、備忘を込めてメモ。


入力フォームのテキストボックス・テキストエリアなどで、入力文字種(日本語、英数、数字など)を指定する方法について。


※なお、今回の対象からはSoftBankのC型・P型は除外します。2010年3月末でサービス終了が発表されてますから、全力で除外します。

DoCoMo

  • PDC端末*1
    • istyle属性で指定する。
    • 1〜4の値でそれぞれ、全角かな/半角カナ/半角英字/数字を表す。
  • FOMA(正確にはXHTML対応機種)
    • text/htmlな文章の時はPDCと同じくistyle属性で指定。
    • XHTMLを使用する場合は、CSSの-wap-input-formatを利用。
      • 全角かな:"*<ja:h>"
      • 半角カナ:"*<ja:hk>"
      • 全角かな:"*<ja:en>"
      • 全角かな:"*<ja:n>"
    • XHTMLの時はistyle属性は無視される。

Au

  • 基本的にistyle属性でOK
  • CSSの-wap-input-format属性も使えるが、DoCoMo/SoftBankとは仕様が違う
    • 詳しくは参考URLを参照
    • ただし、CSSの方は、KDDIの技術サイトには詳しいことは何も書いていない

SoftBank 3GC端末

  • 基本的にistyle属性でOK*2
  • CSSの-wap-input-format属性も使える・・・が、挙動が違う!
    • 属性値の書き方はDoCoMoと同じ
    • ただし、-wap-input-formatだと、「初期入力文字種」ではなく「入力制限」になる。他の文字種に切り替えできない!
    • SoftBankも技術サイトにはCSSについての情報無し。


・・・ということで、みごとに3キャリア三様・・・orz
DoCoMoに至ってはHTMLとXHTMLで互換性がねぇし。。。
なんか、こういうのって、その昔IEとネスケがHTMLを勝手にじゃんじゃん拡張していた頃を思い出しますね。。。激しく迷惑です。。。


まぁ、愚痴はさておき、結論です。

結論

  • AuとSoftBankはistyleで統一
  • DoCoMoは、入力フォームのあるページをHTMLで記述するなら、他の2キャリアと統一で、istyleで記述できる。XHTMLで書くならCSSで。
  • istyle属性とCSSの-wap-input-formatは、両方書いても大丈夫(なので、冗長さを気にしなければ3キャリア統一可能)だが、SoftBankでは「入力制限」になってしまうので、文字の切替えを許す場合はちゃんとだし分けて書かないとダメ。

参考

■DoCoMo技術情報
http://www.nttdocomo.co.jp/service/imode/make/content/html/tag/istyle.html
http://www.nttdocomo.co.jp/binary/pdf/service/imode/make/content/xhtml/HTML_XHTML_taglist.pdf

■ブログ記事
http://www.marguerite.jp/Nihongo/WWW/RefCSS/-wap-input-format.html
http://blog.goo.ne.jp/freebox_tk/e/7313e6bd42d0fd50eccaf883c851b020
※ちなみにこのサイトには「エスケープされてて間違う、とあるが、エスケープした形式の記述でも問題なく動作する。*3
http://mocamoca.biz/blog/2008/04/xhtml.html
http://hex6.net/blog/?p=15
(コメントに、SBの挙動の違いの説明あり)

*1:正確には501は非対応だが、これも全力で除外します

*2:一部海外製端末は使えなかった気がしますが、これも全力で除外します

*3:おそらくエスケープした記述の方がいいのではないか?いまいち根拠はないけど。実機D901iで両者確認したが、どちらの記述でも動いた