- ベストアンサー
JavaScript制御で複数のフォームを1ページに設置する方法
- JavaScriptを使用して、1つのページに複数のフォームを設置する方法について教えてください。
- フォームのデータをCGIに送信する際に問題が発生しています。1つ目のフォームからデータを送信すると、2つ目のフォームの内容も一緒に送信されてしまいます。
- どの部分を修正すれば、フォームごとに正しくデータを送信することができるでしょうか?
- みんなの回答 (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()"> これで、それぞれ違う関数がよびだされるはずです。
その他の回答 (1)
- hidebu-
- ベストアンサー率53% (45/84)
function func() { ~ } の中にすべてのロジックをいれていませんか?
お礼
早速のお返事をどうもありがとうございます。 質問文では文字数制限の関係ですべてのソースが書けなかったので補足欄をお借りして書かせて頂きますが、このソースって、1つめのJavaScriptでは1つめのフォームの内容のみ、2つめのJavaScriptでは2つめのフォームの内容しか扱っていませんよね? 私は本当に見よう見まねだけでJavaScriptに手を出している素人なので、慣れていらっしゃる方の目では一目で「ほら、やっぱり。ここ。」とおっしゃるような部分を見落としているかもしれませんが・・・
補足
これが、問題を抱えている部分を全部抜き出したソースです。 これで、「品目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>
お礼
度々どうもありがとうございます。 やっぱりド素人でした。onclick="func()"の「func」っていじって良いと知らなかったもので・・・。おはずかしいです。 おかげさまで解決しました。 どうもお世話になりました!