- ベストアンサー
1つのフォームに対して複数のボタン
1つのフォームメソッドに対して2つの異なる処理のボタンを持たせることは可能でしょうか? 自分のやりたいのはフォームに書き込んだ内容をどちらのボタンを押しても渡すようにしたいのですが出来るのでしょうか?
- みんなの回答 (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で送信時にデータをセットするといった方法もあります。
その他の回答 (1)
- gazy
- ベストアンサー率19% (13/66)
可能です。type="submit"のinputタグを複数作るだけです。フォームのデータを受け取るCGIなどのプログラムで、どのボタンが押されたか区別するために、それぞれのボタンを違うnameにしておきます。
お礼
どうもありがとうございました。
補足
<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> 上記のようにやってみたのですが"後"ボタンを押して"前"ボタンを押したときの処理が実行されてしまいました。どこか間違っているでしょうか?
お礼
そういう処理だったら出来るんですね。 どうもありがとうございました。