2009年12月4日金曜日

携帯入力フォーマット

auとDoCoMoのはなし。

HTMLモードで入力文字の制限をつけるには
istyle=1 (全角かな)
istyle=2 (半角カナ)
istyle=3 (英字/半角文字)
istyle=4 (数字/半角文字)

でやるけど、xhtmlで同じ指定をするには、style指定が必要で、
DoCoMoの場合、
style="-wap-input-format:"*<ja:h>"" (全角かな)
style="-wap-input-format:"*<ja:hk>"" (半角カナ)
style="-wap-input-format:"*<ja:en>"" (英字/半角文字)
style="-wap-input-format:"*<ja:n>"" (数字/半角文字)

auの場合、
style="-wap-input-format:*M;"(全角かな)
style="-wap-input-format:*m;"(英字/半角文字)
style="-wap-input-format:*N;"(数字/半角文字)

※ クオーテーションとかダイナリ・ショウナリの記号はちゃんとエンティティ表記でね。

となる。
が、同じスタイル要素に違う値を割り当ててるのが問題で、ひとつのxhtmlファイルで両方に対応しようとすると、順番がキーになってくる。
試した限りでは、au指定→DoCoMo指定でないと、auの方でエラーになってうまく認識されない模様。

つまり、数字を入力させたいときは

istyle="4" format="*N" mode="numeric" style="-wap-input-format:*N;-wap-input-format:"*<ja:n>""

とする。

かなり冗長であるが、これで全パターンに対応できるはず。
ただ、順番云々っていうのは、確実ではないだろうし、DoCoMoの機種の中にも、先に無効な指定があったらstyleのパースを中断するようなものがあるかもしれない。そうなると、これでもダメで、結局、キャリアごとにCGI側でマジック指定を埋めこまないとダメ、っていう事になる。
とりあえず、急ぎの仕事の場合は、これで急場をしのいで、受け取り側でしっかり値のチェックを行うことで、重大なエラーは発生しないように対処することに。

いろいろ難しいね。

0 件のコメント:

コメントを投稿