• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:1つのformで複数のactionを実行できますか?)

1つのformで複数のactionを実行できますか?

このQ&Aのポイント
  • フォーム内に商品の購入ボタンがあります。同じフォーム内に商品名でグーグルのサイト内を検索させるボタンを設置し、横に並べることは可能ですか?フォームの入れ子はよくないようなので、検索をJava scriptでできればよいのですが・・・スタイルシートではデザイン上無理でした。
  • フォーム内に商品の購入ボタンと商品名でグーグルのサイト内を検索できるボタンを設置したいですが、1つのformで複数のactionを実行することはできますか?フォームの入れ子は避けたいので、もしくはJavaScriptで検索を行えば良いのですが、デザイン上の制約があります。
  • フォーム内に商品の購入ボタンとグーグルでサイト内検索を行うボタンを配置したいのですが、1つのフォームで複数のactionを実行することは可能でしょうか?フォームの入れ子を避けたいのですが、デザイン上の制約があります。JavaScriptを使用して検索を行う方法もありますが、できればフォーム内に並べたいです。

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.4

では、以下のような感じで。 なるべく多くのブラウザで動くように書いたつもりですが検証は充分行ってください。 <html> <head> <title></title> <script type="text/javascript"> <!-- function searchGoogle(q) { document.forms['searchForm'].elements['q'].value=q; document.forms['searchForm'].submit(); return false; } //--> </script> </head> <body> <form action="URL"> ~~ <input type="image" src="kounyuu.gif value="購入"> <a href="http://www.google.co.jp/" onclick="return searchGoogle('商品名')"><img src="検索.gif" border=0></a> </form> <form action="http://www.google.co.jp/search" id="searchForm" style="display:none;"> <input type=hidden name="q"> <input type=hidden name=ie value="UTF-8"> <input type=hidden name=oe value="UTF-8"> <input type=hidden name=hl value="ja"> <input type=hidden name=sitesearch value="サイトのURL"> </form> </body> </html>

toutetsu
質問者

お礼

steel_grayさん。お返事遅くなってすみません。 教えていただいた内容で希望通りのものができあがりました。 本当にありがとうございます。 document.form.submitを使って試行錯誤していましたが、<script>内がうまく書けませんでした。 なるほどここはこうやって書くのですね。 formもスタイルシートのdisplay:none;で見えなくするという発想も驚きでした。 まだまだ勉強することが多そうです。 なるべく自力で解決するよう頑張りますが、行き詰ったときにはまた教えていただければ幸いです。

その他の回答 (3)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.3

> スタイルシートでは無理でした。 ということですが無理ではないと思います。 もう一度挑戦してみては? 以下は一例ですが他にもやりようはあると思います。 <form action="URL"> <input type="submit" value="購入" style="float:left;"> </form> <form action="URL" style="display:inline;"> <input type="submit" value="検索"> </form>

toutetsu
質問者

補足

steel_grayさん、いつも回答いただきありがとうございます。 確かにボタンだけならfloatを使うことができますね。 しかし今回はデザインの都合上、購入ボタンのあるformは大きなボックスとなってボタンを包んでいるのです。 検索ボタンをtop: -25px; left: 150px; のようにしたりもしましたが、IE6でブラウザ上は問題なく見えるもののDreamweaverのプレビューで大きく崩れてしまうのです。 PCに不慣れなクライアントがDreamweaverで更新作業させますのでこれだと作業場所と見栄えが一致せず支障があります。 できればフォームの中に入れてしまいたいのです。 何かよい解決方法がありましたら教えてください。

  • tyunji
  • ベストアンサー率19% (68/349)
回答No.2

一旦他のページに飛ばして、そこで分岐させてはどうでしょう? 以前PHP(+Java Script)でそういう構造のを書きましたが、飛ばした後の分岐はCGIやJAVAでも可能でしょう。飛ばす先は他のページではなく自ページでも良いです。

toutetsu
質問者

補足

yambejpさん、早速の回答ありがとうございます。 分岐のコードを製作するのはJava Script初心者の私にとっては質問の内容と同じかそれ以上に難しく感じられます。 いろいろ検索してみたところ、document.form.actionかdocument.form.submitでできそうな気がします。もう少し調べてみます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

formにidを振って、actionを書きかえればできる とは思いますが、極端なクライアント依存で、 あまりお勧めできません。 例えば、検索と購入をラジオボタンで選ばせて submitは「実行」とするとか、 検索をおすとhiddenに指定されたsearchという 項目にtrueをいれるとか、そういうパラメータで 受け取ったaction側が判断するのがあるべき フォームの使いか方かとおもいます。

toutetsu
質問者

補足

yambejpさん、早速の回答ありがとうございます。 せっかく教えていただいたのですが、内容が高度過ぎて残念ながら半分程度しか理解できませんでした。 >例えば、検索と購入をラジオボタンで選ばせて >submitは「実行」とするとか、 これは購入するにも検索するにもユーザが2度クリック(ラジオボタンと実行ボタン)しなければならず、不親切ではありませんか? フォームの使い方としては正しいのでしょうが・・・

関連するQ&A