• 締切済み

Submitしたボタンを知る方法は?

<form onsubmit="function()"> <button type="submit" id="button1" name="cmd" value="1">1番を選ぶ</button> <button type="submit" id="button2" name="cmd" value="2">2番を選ぶ</button> </form> とした場合に、function()内で、押したボタンを知るにはどこを見ればよいでしょうか? ちなみに、このあと適当なcgiにpostし、name,valueはそちらで処理する予定ですので、この2つの要素については大幅な変更は出来ません。

みんなの回答

  • luka3
  • ベストアンサー率72% (460/632)
回答No.4

Action1と2は押しても何も反応がありませんでした。 action3(と4)は submit =>action3 と出ました。 環境によるんでしょうかね。 WinXP+IE6で確認しました。

shidho
質問者

補足

firefoxではどれでも普通に出るんですが、 IE6だとinputボタンでないと反応しないみたいですね。

すると、全ての回答が全文表示されます。
  • luka3
  • ベストアンサー率72% (460/632)
回答No.3

onclickではやりたくないということはわかりました。 ところでNo1さんの補足で >(実際、通常GETまたはPOSTでサーバに送る時点で、押されなかったボタンの値は送信されませんから、どこかで区別されているのではないかと思います。) とありますが、<button type="submit"… だと押されなかったボタンの値も送信されませんか? <input type="submit"… だと押されない方は送信されません。 私の環境だけですかね? そこに何かヒントがあるかと思って少し調べてみたのですが、結局のところ解決には至りませんでした。 お役に立てずすみません。

shidho
質問者

お礼

お試し頂いてありがとうございました。 私が試したときは、どちらでも押した方だけ送信されました。 ちなみに、こんなソース(php)です。 <html><body> <?php foreach ($_POST as $key => $value){ print $key." =>".$value."<br/>\n"; } ?> <form id="test1" method="post" action="./index.php"> <button name="submit" value="action1">Action 1</button><br> <button name="submit" value="action2">Action 2</button><br> <input type="submit" name="submit" value="action3" /><br> <input type="submit" name="submit" value="action4" /><br> </form></body></html>

すると、全ての回答が全文表示されます。
  • luka3
  • ベストアンサー率72% (460/632)
回答No.2

onsubmitでないとダメなのでしょうか。 ボタンのonclickに関数を割り当てて、その関数の中でsubmitする、という方法なら可能だと思いますが。

shidho
質問者

補足

現在はonclick()で無理矢理割り付けています。

すると、全ての回答が全文表示されます。
  • maura
  • ベストアンサー率46% (48/104)
回答No.1

参考情報です。 タイトル:どのフォームのどのボタンが押されたか判別するには? http://chaichan.hp.infoseek.co.jp/qa1000/qa1374.htm ActionListener getActionCommand でどのボタンが 押されたか知る方法 http://wisdom.sakura.ne.jp/system/java/awt/Gjava20.html ”この2つの要素については大幅な変更は出来ません”というのが 具体的にどういうことなのか、それ次第で対応が変わってきます。

shidho
質問者

補足

今やろうとしているのは、とあるphpスクリプトのajax化で、 できればサーバ側をいじりたくないのです。 form内要素はDOM構造を見ることですべて参照出来ますが、 submitボタンが複数ある場合、全てのsubmitボタンの値を拾ってしまいます。 これですと、サーバのphpスクリプト側で指定動作を決めることができません。 onsubmitイベントで、何かのプロパティが変化しているのではないかと 思ったのですが、調べられず、今ここで質問した次第です。 (実際、通常GETまたはPOSTでサーバに送る時点で、押されなかったボタンの値は送信されませんから、どこかで区別されているのではないかと思います。) onclickにボタンごとに別の関数もしくは引数を入れることで 似たような動作は出来ますが、汎用性がなく、スマートでないのでどうにかしたいと考えています。

すると、全ての回答が全文表示されます。

関連するQ&A