携帯サイトを作る上で、キャリア判定っつーのは避けて通れないんですが、テキストボックスの入力モード(全角ひらがなとか半角英数とか)ってのは、このサイトの方法に、istyleの記述を追加して、今まで使ってたんですねー。
で、今朝までそれが通用してたんですけど、クレームの電話。
「○○コード入力のところで、英数入力から数字入力に切り替えできないので入力できません!!ソフトバンクです!!」
って、(゚Д゚)ハァ??
実機(パナソニック)で再現しないので、またオペレーションミスだろーと穿ってみたけど、あららホントでした。シャープ製ソフトバンク機種の一部では入力「制限」モードになるらしいっす。
(こちらのサイトでも指摘があったようで、追記されてました。)
フムフム、結局キャリア別に記述を変えないと実装できないんですねー。なるほどー。
誰か晒してるだろーと思って調べてみたけど、ボクのGoogle能力の低さでは調べられず。
ってわけで、PHPの自前ヘルパー的な関数作ってみました。
<?php function istyle($mode) { $istyle = ''; switch ($mode) { case 3: //アルファベット switch (true) { case (isDoCoMo()): $istyle = 'style="-wap-input-format:"*<ja:en>";-wap-input-format:*m;"'; break; case (isSoftBank()): case (isEZweb()): $istyle = 'istyle="3" mode="alphabet"'; break; } break; case 4: //数字 switch (true) { case (isDoCoMo()): $istyle = 'style="-wap-input-format:"*<ja:n>"; -wap-input-format:*N;"'; break; case (isSoftBank()): case (isEZweb()): $istyle = 'istyle="4" mode="numeric"'; break; } break; } return $istyle; } //docomoですか? function isDoCoMo() { $ua = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/^DoCoMo/', $ua)) { return TRUE; } return FALSE; } //auですか? function isEZweb() { $ua = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/^KDDI-/', $ua)) { return true; } elseif (preg_match('/^UP\.Browser/', $ua)) { return true; } return false; } //ソフトバンクですか? function isSoftBank() { $ua = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/^SoftBank/', $ua)) { return true; } elseif (preg_match('/^Vodafone/', $ua)) { return true; } elseif (preg_match('/^J-PHONE/', $ua)) { return true; } elseif (preg_match('/^MOT-/', $ua)) { return true; } return false; }
で、HTML側は、
<!--メールアドレス--> <input type="text" name="mail" value="" <?=istyle(3);?> /> <!--電話番号--> <input type="text" name="tel" value="" <?=istyle(4);?> />
とかやればよろし、たぶん。
誰か添削してくんねぇーかなー。
携帯サイト コーディング&デザイン
posted with amazlet at 11.03.23
高木 悠介
ソフトバンククリエイティブ
売り上げランキング: 27696
ソフトバンククリエイティブ
売り上げランキング: 27696