• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScript制御のフォームを1ページに複数設置するには?)

JavaScript制御で複数のフォームを1ページに設置する方法

このQ&Aのポイント
  • JavaScriptを使用して、1つのページに複数のフォームを設置する方法について教えてください。
  • フォームのデータをCGIに送信する際に問題が発生しています。1つ目のフォームからデータを送信すると、2つ目のフォームの内容も一緒に送信されてしまいます。
  • どの部分を修正すれば、フォームごとに正しくデータを送信することができるでしょうか?

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

  • ベストアンサー
  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.2

>このソースって、1つめのJavaScriptでは1つめのフォームの内容のみ、2つめのJavaScriptでは2つめのフォームの内容しか扱っていませんよね? いえ、この内容だと、(ブラウザの実装にもよりますが)後のfuncをよびだしてしまいます。 つまり、どちらのsubmitボタンをクリックしても後者のほうしかよばれません。 ですので、ひとつめとふたつめの関数名をかえてしまいましょう (func()の箇所) javascriptの2つめのfuncのところをfunc2に function func2() { ~ } 2つめのフォームHTMLのfuncのところをfunc2にかえてみてください。 <input type="button" value="カートへ" onclick="func2()"> これで、それぞれ違う関数がよびだされるはずです。

chack
質問者

お礼

度々どうもありがとうございます。 やっぱりド素人でした。onclick="func()"の「func」っていじって良いと知らなかったもので・・・。おはずかしいです。 おかげさまで解決しました。 どうもお世話になりました!

その他の回答 (1)

  • hidebu-
  • ベストアンサー率53% (45/84)
回答No.1

function func() { ~ } の中にすべてのロジックをいれていませんか?

chack
質問者

お礼

早速のお返事をどうもありがとうございます。 質問文では文字数制限の関係ですべてのソースが書けなかったので補足欄をお借りして書かせて頂きますが、このソースって、1つめのJavaScriptでは1つめのフォームの内容のみ、2つめのJavaScriptでは2つめのフォームの内容しか扱っていませんよね? 私は本当に見よう見まねだけでJavaScriptに手を出している素人なので、慣れていらっしゃる方の目では一目で「ほら、やっぱり。ここ。」とおっしゃるような部分を見落としているかもしれませんが・・・

chack
質問者

補足

これが、問題を抱えている部分を全部抜き出したソースです。 これで、「品目1」の「7本セット」をカートに入れたはずが「品目2」の「普通セット」(そのとき2つめのフォームで選択状態になっている値)がカートに入ってしまうのです。 <script type="text/javascript"> <!-- function func() { var n = document.F1.S1.selectedIndex; var d = document.F1.S1.options[n].text.split(" "); document.H1.AA1.value=d[1].slice(0,-1); document.H1.AA2.value=d[0]; document.H1.AA3.value=document.F1.T1.value; document.H1.submit(); } // --> </script> <form name="F1" action="#"> <select name="S1"> <option>3本セット 100円 <option>7本セット 200円 </select> <input type="hidden" name="T1" value="品目1"> <input type="button" value="カートへ" onclick="func()"> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="AA1"> <input type="hidden" name="AA1"> <input type="hidden" name="AA3"> </form> <script type="text/javascript"> <!-- function func() { var n = document.F2.S2.selectedIndex; var d = document.F2.S2.options[n].text.split(" "); document.H2.AA4.value=d[1].slice(0,-1); document.H2.AA5.value=d[0]; document.H2.AA6.value=document.F2.T2.value; document.H2.submit(); } // --> </script> <form name="F2" action="#"> <select name="S2"> <option>普通セット 100円 <option>特別セット 200円 </select> <input type="hidden" name="T2" value="品目2"> <input type="button" value="カートへ" onclick="func()"> </form> <form name="H1" action="cart.cgi"> <input type="hidden" name="AA4"> <input type="hidden" name="AA5"> <input type="hidden" name="AA6"> </form>

関連するQ&A