MENU

携帯用XHTMLでテキストボックスの初期入力モードを指定するPHPのヘルパー関数、かな?

携帯サイトを作る上で、キャリア判定っつーのは避けて通れないんですが、テキストボックスの入力モード(全角ひらがなとか半角英数とか)ってのは、このサイトの方法に、istyleの記述を追加して、今まで使ってたんですねー。

で、今朝までそれが通用してたんですけど、クレームの電話。

「○○コード入力のところで、英数入力から数字入力に切り替えできないので入力できません!!ソフトバンクです!!」

って、(゚Д゚)ハァ??

実機(パナソニック)で再現しないので、またオペレーションミスだろーと穿ってみたけど、あららホントでした。シャープ製ソフトバンク機種の一部では入力「制限」モードになるらしいっす。
こちらのサイトでも指摘があったようで、追記されてました。)

フムフム、結局キャリア別に記述を変えないと実装できないんですねー。なるほどー。

誰か晒してるだろーと思って調べてみたけど、ボクのGoogle能力の低さでは調べられず。
ってわけで、PHPの自前ヘルパー的な関数作ってみました。

<?php

function istyle($mode)
{
	$istyle = '';
	switch ($mode)
	{
		case 3:	//アルファベット
			switch (true)
			{
				case (isDoCoMo()):
					$istyle = 'style="-wap-input-format:&quot;*&lt;ja:en&gt;&quot;;-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:&quot;*&lt;ja:n&gt;&quot;; -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);?> />

とかやればよろし、たぶん。

誰か添削してくんねぇーかなー。

携帯サイト コーディング&デザイン
高木 悠介
ソフトバンククリエイティブ
売り上げランキング: 27696