• ベストアンサー

1つのセレクトボックスで2つのNAMEとVALUEをCGIに渡したいのですが

Perlで作動するフリーウエアのCGIに、HTMLのフォームからデータを渡したいんですが、セレクトボックスで 3個セット 2000円 6個セット 5800円 9個セット 10500円 と選択肢を入れ、例えば<OPTION>の「6個セット 5800円」を選択して「カートへ」をクリックすると「NAME=shubetsu VALUE=6個セット」と「NAME=kakaku VALUE=5800」をいっぺんにCGIに送れるようにしたいのですが、方法はないでしょうか? 選択方法をセレクトボックスにせず例えば3つボタンを配置して、それぞれに「<a href="cart.cgi?kakaku=2000&shubetsu=3個セット>」「<a href="cart.cgi?kakaku=5800&shubetsu=6個セット>」とリンクを入れれば解決する問題ですが、ボタンを3つも配置する場所がないのと、ページ内でのバランスの関係でどうしてもセレクトボックスにしなければならない事情があるのです。

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

  • ベストアンサー
  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.3

すみません。自分のウインドウを変える場合はこれでした window.location = "cart.cgi?kakaku="+ d[1].slice(0,-1) + "&shubetsu="+ d[0]; 別のフォームの内容を付ける場合は… + "&text=" + escape(document.F1.T1.value); などと後ろに付けていくか、 あるいは隠しフォームに値をコピーしてsubmitするとか <html><body> <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); document.H1.kakaku.value=d[1].slice(0,-1); document.H1.shubetsu.value=d[0]; document.H1.text.value=document.F1.T1.value; document.H1.submit(); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3個セット 2000円 <option>6個セット 5800円 <option>9個セット 10500円 </select> <input type="button" value="カートへ" onclick="func()"> <textarea cols=30 rows=5 name="T1"></textarea> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="kakaku"> <input type="hidden" name="shubetsu"> <input type="hidden" name="text"> </form> </body></html>

chack
質問者

お礼

何度も申し訳ありませんでした。どうもありがとうございます! 変数の意味を理解するのに時間がかかってお礼が遅くなりましたが、おかげさまで扱い方がわかりました。 とても助かりました。 本当にありがとうございました!!

その他の回答 (2)

  • pipipi523
  • ベストアンサー率40% (148/365)
回答No.2

どうしても小細工したい場合はJavaScriptを使います こんな感じでしょうか。 <html><body> <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); window.open("cart.cgi?kakaku="+ d[1].slice(0,-1) + "&shubetsu="+ d[0], _self); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3個セット 2000円 <option>6個セット 5800円 <option>9個セット 10500円 </select> <input type="button" value="カートへ" onclick="func()"> </form> </body></html>

chack
質問者

お礼

どうもありがとうございます! 私はCGIは殆どいじれないので、この形は非常にありがたいです!! なるほど、やっぱりHtmlだけでは無理なんですね。 早速あてはめてみたんですが、カートへボタンをクリックしてもCGIに行かずに元ページに戻る動作しかしてくれず、デバッグウインドウで「_selfは定義されていません」というメッセージがでていたので、「, _self」を外したところ、別ウインドウが開いてCGIに数値が渡されました。 私の浅い知識で考えても確かに「_self」がなければそうなるよなぁって思うんですが、なぜかこれがあると働かないんです。 それと、このフォームにノーマルなプルダウンを追加すると、そのデータってやっぱりCGIに渡されないんですよね。 「"cart.cgi?kakaku="+ d[1].slice(0,-1) + "&shubetsu="+ d[0]」でCGIに情報を渡しているということはそれは当然ということは理解できるのですが、そういったノーマルなセレクトボックスやテキストエリアを自由に追加することが出来る形って、やっぱり無理でしょうか? まさに希望に合いそうなご回答を頂いていながら注文が多くて申し訳ないです~!

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 あんまり小細工をせずに。例えば、name="shubetsu_and_kakaku" value="6個セット 5800"とかっていう風な感じではまずいでしょうか? valueを、例えばスペースあたりで区切って、プログラムで切り分けるとか。

chack
質問者

お礼

どうもありがとうございます。 私はCGIを殆どいじれませんし、このCGIには他のサイトからもアクセスがあるのでプログラム自体をいじるのは問題がありまして…。 せっかくご提案頂いたのに申し訳ありません。 これでもCGIの本を買って少しは勉強しているのですが。

関連するQ&A