• ベストアンサー

1つのフォームに対して複数のボタン

1つのフォームメソッドに対して2つの異なる処理のボタンを持たせることは可能でしょうか? 自分のやりたいのはフォームに書き込んだ内容をどちらのボタンを押しても渡すようにしたいのですが出来るのでしょうか?

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

  • ベストアンサー
  • wolfwood
  • ベストアンサー率50% (199/398)
回答No.2

同じフォーム内で複数のsubmitボタンを配置してもその動作は同じとなります。 補足から推測しますと、やりたいことは押されたボタンを判定するhiddenデータを送りたいということでしょうか。$aのデータを共通で送り、ボタンによってhiddenのデータを変えると判断しました。 ボタンが同じフォーム内にある限りhiddenは全て送られます。 方法としては、#1の方の書かれているように押したボタンのnameによって受け取るデータを判定する方法があります。 例) <FORM method="POST" action="****"> <INPUT type="text" name="t1" value=$a > <INPUT type="submit" value="ボタン1" name="s1"> <INPUT type="submit" value="ボタン2" name="s1"> </FORM> ボタン1を押すとt1とs1のvalue(値)が送られます。つまり、$aと"ボタン1"が送られます。ボタン2を押すとs1のvalue(値)は"ボタン2"になります。 これで受け取り側のCGIでs1のデータを判定して処理を分けることが出来ます。 また、送るデータを取捨選択するにはフォームを別けるか、JavaScriptで送信時にデータをセットするといった方法もあります。

jkkm
質問者

お礼

そういう処理だったら出来るんですね。 どうもありがとうございました。

その他の回答 (1)

  • gazy
  • ベストアンサー率19% (13/66)
回答No.1

可能です。type="submit"のinputタグを複数作るだけです。フォームのデータを受け取るCGIなどのプログラムで、どのボタンが押されたか区別するために、それぞれのボタンを違うnameにしておきます。

jkkm
質問者

お礼

どうもありがとうございました。

jkkm
質問者

補足

<FORM method=POST ation="lastaddress.cgi"> <INPUT type=text name=lastname value=$a> <INPUT type=hidden name=mode value="after"> <INPUT type=submit name=mode value="前"> <INPUT type=hidden name=mode2 value="before"> <INPUT type=submit name=mode2 value="後"> </FORM> 上記のようにやってみたのですが"後"ボタンを押して"前"ボタンを押したときの処理が実行されてしまいました。どこか間違っているでしょうか?

関連するQ&A