• ベストアンサー

submitについて

皆様、はじめまして。 この度javascriptを利用したサイトを作ろうと頑張っておりましたがつまずいたのでご質問させていただきます。 一つのformに二つのsubmitを作成して、javascriptを利用してそれぞれのsubmit先(action)を変えることは可能でしょうか? 尚、送信する際はどちらのsubmitでも全データを送信したいです。 現在の状況は、 JSPからJAVAサーブレットへデータを送ろうとしてます。

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

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

たとえばform.actionを切り替える手もあります。 あんまりメリットがあるとも思えません。 飛び先は一つにして、与えられたデータをもとに 解釈するほうが良いと思いますが。 <script language=javascript> function submitFunc(f){ for (var i=0;i<f.length;i++){ if(f[i].type=="radio" && f[i].name=="actionList" && f[i].checked==true){ f.action=f[i].value alert(f.action) return true; } } return false; } </script> <form action="c.htm" onSubmit="return submitFunc(this)"> <input type="radio" name="actionList" value="a.htm"checked >a.htm <input type="radio" name="actionList" value="b.htm">b.htm <input type="submit" value="送信"> </form>

kazu60
質問者

お礼

javascript内でactionを切り替えて飛ばすことが出来ました。。がやはり効率が悪いですね。。。 もう少し考えて効率のいい方法を見つけ出すことにします。 ご協力ありがとうございました。

その他の回答 (1)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.1

素直にFORMを2つ使った方が楽なんじゃないでしょうか。 というか、サーブレットなら飛ばし先は1つで、値でメソッドを変えるようにしたほうがいいんじゃないのかな~ って思うのはあさはかですか?(^_^;) <FORM ID="A" ACTION="./servlet/a.do"></FORM> <FORM ID="B" ACTION="./servlet/b.do"></FORM> だとして、 <SCRIPT> function switchAction(x){ var fm; if (x == 'a'){ fm = window.document.getElementById("A"); } else { fm = window.document.getElementById("B"); } fm.submit(); } </SCRIPT> みたいに(ごめん未確認)すると、切り替えられますが。

kazu60
質問者

お礼

たしかに正直、二つに分けた方がソースが綺麗な上に 効率がいいようですね・・・ 貴重なご意見ありがとうございました。

関連するQ&A

  • JavaScriptでsubmitされない

    おはようございます。早速ですが、JavaScript中で、 document.formName.action = "サーブレット名"; document.formName.submit(); としてサーブレットにJSPの値を送信したいのですが、 JavaScriptの中でエラーが出てしまい送信できません。 調べた結果どうやらdocument.formName.submit();の所でエラーが出ます。原因として考えられるものは何でしょうか?よろしくお願い致します。

  • submit()について

    突然ですがアドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.aaaaa.submit(); } --> </SCRIPT> これで“Form1”内のNAMEが“aaaaa”とついた フォームの値を送信できますよね、 ここで質問なのですが、 例えばNAMEが“aaaaa”のフォームの他に NAMEが“bbbbb”というフォームがあったとして、 “aaaaa”と“bbbbb”の値を同時に送信したいときには、 <SCRIPT LANGUAGE="JavaScript"> <!-- function aSubmit(){ document.Form1.action='xxxxx'; document.Form1.('aaaaa,bbbbb').submit(); } --> </SCRIPT> とこんな書き方でも大丈夫なのでしょうか?

  • 1つのフォーム内容を1つのsubmitで複数ページに同時送信

    tomcat5.0+mysql5.1+jsp+html まったく同じフォーム内容を2つのページに送信しようとしています。 center.jsp内にあるひとつのsubmitボタンを押して、同時に2つのページでデータを受け取りたいのです。 どなたかわかるかたいらっしゃいますでしょうか? center.jsp → rightA.jsp       → leftB.jsp フレーム分割しているので、イメージ的には下記のような感じです。 action='rightA.jsp' method='post' target='rightA' action='leftB.jsp' method='post' target='leftB' ※javascriptで可能だと知り合いから聞いたのでいろいろ調べてみましたが…  いまいちjavascriptが理解できないでいます。 <script language="JavaScript"> <!-- function sendForm() { formElem.method = "post"; formElem.action = "rightA.jsp"; formElem.target = "rightA";                formElem.action = "leftB.jsp"; formElem.target = "leftB";  ~ } // --> </script> <form name='form' action='' onsubmit='retrun sendForm()'> ~           

  • java、サーブレットなどを勉強しています。html(jsp)のfor

    java、サーブレットなどを勉強しています。html(jsp)のform actionでサーブレットに飛ばしたいとき、レイアウト上別の処理をさせたい(submit)ボタンがあります。 form actionタグはネスト出来ないとの事で、他の方法を探しています。 submitでなく、type="button" でjava script処理と言う解法があるようですが、まだそこまで勉強していないので、ひとつ教えてください。 input type="submit"にvalueがあります、ボタン名になりますが、このvalueは受け手のサーブレットで、読めないのでしょうか。読めればそれによって、処理を分けれるのですが。 あるいは、input type="submit"でサーブレットに別の情報を送る手段はあるでしょうか。 よろしくお願いいたします。

  • submitで。。。

    現在、JBuilderを使ってサーブレット+JSPのWEBアプリを作っています。 悩んでいるのは、IEでバックボタンを使って元のページに戻れないようにしたいのですが、 INPUTのTYPEがsubmitの場合、うまくいかないのです。 調べてみると「location.replace()」を使えばよいようなのですが。。。 現在は以下のようにやっています。(TestServletはサーブレット) <input type="submit" action="javascript:location.replace('TestServlet') ~> <input type="text" name="T1"> <input type="submit" name="Submit" value="TEST"> このようにすると、submitボタンを押した場合、リクエストがTestServletのdoPostでなくて、doGetにいってしまうのです。 そうすると「String 値 =request.getParameter("T1");」のようにしてT1の値を取得しようとしても"null"となってしまいます。 なにか他によい方法があるのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Java
  • submitではなくbuttonで送信

    事情があり、submitではなくbuttonでフォームのデータを送信したいのですが、以下のように書くとbuttonでは4567が送信されません。 <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="submit" name="bbb" value="4567"> </form> ↓ <form action="test.cgi" method="post"> <INPUT type="hidden" name="aaa" value="1234"> <INPUT type="button" name="bbb" value="4567" onclick="submit();" > </form> submitと同じように、bbbのデータ4567も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。

  • サーブレット

    HTMLからJavaサーブレットを起動させたいのですが、 うまく行きません submitでActionを起こしてます。 <form name="form1" method="post" action="AAA"> javaサーブレットは同じディレクトリに存在します。 どのようにすればよろしいでしょうか? よろしくお願いします。

  • submit()で送れない

    <SCRIPT language="JavaScript"> <!-- function send55() { document.frm.aaa.value = "送る内容"; document.frm.submit(); } //--> </SCRIPT> <A href="JavaScript:void(0)" onclick="send55()">ここをクリック</A> <FORM name="frm" method="POST" action="test.php"> <input type="hidden" name="aaa"> </FORM> 上記内容で「ここをクリック」をクリックすると、aaaには"送る内容"がセットされるのですが、続くsubmit()が動作しないようです。 試しに<FORM>タグ内に以下の1行 <INPUT type="submit" name="test" value="送信テスト" > を追加して「送信テスト」ボタンをクリックすると正しくtest.phpが開きます。 使い方を間違っていますでしょうか? ご指導よろしくお願いします。

  • submit関数の使い方

    javascript部分 function sendform(formname){ document.formname.submit(); } html部分 <form action="test.html" method="post" name="form1"> <input type="text" name="textvalue" value="1"> </form> <a href="javascript:void(0)" onclick="sendform('form1'); return false;">click1</a> <form action="test.html" method="post" name="form2"> <input type="text" name="textvalue" value="2"> </form> <a href="javascript:void(0)" onclick="sendform('form2'); return false;">click2</a> 今は、上記のように書いています。引数でフォーム名を渡し、その値によって送信フォームを変えたいのですがうまくいきません。if文を使って if(formmei=="form1"){ document.form1.submit(); }else if(formmei=="form1"){ document.form2.submit(); } という方法も考えたのですが、フォーム名だけ変えることができないかと考えています。 よろしくお願いします。

  • Firefox:JavaScriptのsubmit

    JavaScriptで、以下のようにsubmitしていますが、 IEではOKで、Firefoxでは「送信開始」ボタンで反応がありません。 Firefoxではどのように書けばよいのでしょうか? 以下は、テストのため省略できるギリギリまで省略していますので、意味のないスクリプトになってますが、実際にはJavaScriptで空白個所のチェックのロジックを入れています。 <html> <head> <script language="JavaScript"> <!-- function check1(){ document.FORM1.submit(); } ---> </script> </head> <form action='http://hogehoge.jp' method='post' name="FORM1"> <input type='button' value='送信開始' onClick="check1()"> </form> </body> </html>

専門家に質問してみよう