• ベストアンサー

form button での値渡し

PHPかHTML どっちに質問するか迷いましたが こちらにしました。 宜しくお願いします。 質問の内容は InternetExplorer 6.0 SP1(IE) と Firefox 1.0 で動作の異なる所があるので困っています。 私のミスなのか 仕様なのかが知りたいです。 問題のソースです。 <form action="hoge" method="post"> <button type="submit" name="name" value="Satou">Satou</button> <button type="submit" name="name" value="Katou">Katou</button> </form> をPHPで値を貰った結果 Firefoxの場合 Satou が押された時 name の内容は Satou Katou が押された時 name の内容は Katou IEの場合 Satou が押された時 name の内容は Katou Katou が押された時 name の内容は Katou 私の期待している 挙動は Firefox の方なんですが IE では違う動きを見せます 何か気づく点がありましたら アドバイス宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

それぞれの名前を別にする必要があると思います。 例えばDOMの様にフォーム(のボタンに)アクセスする場合、 form名.ボタン名の様にアクセスすると思うのですが、 これが同じ名前であると、一意に決定できません。 チェックボックス等の配列として動作することが決まっているようなものはいいですが、 普通ボタンは、配列になると想定されていないと思います。 なので、普通名前は識別可能なように一意なものを付けるべきだと思いますが。

maruchan0488
質問者

お礼

アドバイスありがとうございます。 そうですね そう考えると Firefox が親切心で(余計な)通してくれたんですかね

その他の回答 (1)

  • betagamma
  • ベストアンサー率34% (195/558)
回答No.2

NO.1さんのおっしゃる通りです。name=の名前は、違うものにする必要があります。具体的には、 <form action="hoge" method="post"> <button type="submit" name="name1" value="Satou">Satou</button> <button type="submit" name="name2" value="Katou">Katou</button> </form> とすれば動くと思います。もし、項目がたくさんあって(40とか50とか)いちいち名前を付けるのが大変な場合は、このフォーム自体をPHPで生成してください。

maruchan0488
質問者

お礼

アドバイスありがとうございます。 betagammaさんのやり方で上手く動作することを確認いたしました。 ただ、、、変数名を一緒にするのを諦めきれずこんなの書いてみました <form action="hoge" method="post"> <input type="submit" name="name" value="Satou"> <button type="submit" name="name" value="Katou"> </form> この書方だと 私の納得いく動作をしてくれました。 IE,Firefox 以外の環境で試していないので たまたま動いてしまったのかもしれません 難点として ボタン名と変数の値が別々に出来ないことです。

maruchan0488
質問者

補足

すいません 上の書き間違えました。 <form action="hoge" method="post"> <input type="submit" name="name" value="Satou"> <input type="submit" name="name" value="Katou"> </form>

関連するQ&A