ラジオボタンをdisabledにするとPOSTされてこない
最近仕事でPHPを久々に触っていますが、ラジオボタンの簡単なところでではまってしまった。
ある登録画面で、状態設定のラジオボタンを設置し、全ての入力項目を入れた後で「確認」ボタンで一旦画面の項目を全てdisabledの指定で再表示し、更に「登録」ボタンで実際のDBに登録するという手順です。(以下の様なソースです)
...
<?
if ( 確認ボタン押下時? ) {
$strDisabled = "disabled";
}
$strChecked1 = "";
$strChecked2 = "";
if ($strStatus == 1) {
$strChecked1 = "checked";
} elseif($strStatus == 2) {
$strChecked2 = "checked";
}
?>
<input type="radio" name="radioButton" value="1" <?=$strChecked1?> <?=$strDisabled?>/>状態1
<input type="radio" name="radioButton" value="2" <?=$strChecked2?> <?=$strDisabled?>/>状態2
...
disabledの状態で、POST処理を行なうわけですが、いくら$_POST["radioButton"]を見ても変数が宣言されていません。いくらやってもradioButtonは渡されてこないわけで、DBには値が
登録されません。他のtype="text"のものは渡されてくるのにtype="radio" は渡されない。
type="radio" でdisabled指定のものはPOSTされてこないことを思い出し、状態のデータをtype="hidden" で退避しておくことで、事なきを得ました。
たった2,3ヶ月PHPを触っていないだけでこの有り様、もう少し精進しないと...
しかし、仕様とはいえ、type="text"ではPOSTされるのなら、type="radio"でも
渡されても良い様な気がしますが。
コメント