Formの中で別のactionをもったsubmitボタンの設置

このQ&Aのポイント
  • HTMLフォームには、別のactionを持つsubmitボタンを設置することができます。
  • しかし、フォーム内のsubmitボタンが持つactionが異なるため、フォームのデータを正しく送信することができません。
  • フォーム内でファイルを添付する場合は、JavaScriptを使用してファイルを別のアクションで送信する必要があります。
回答を見る
  • ベストアンサー

formの中で別のactionをもったsubmitボタンの設置。

formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 送信画面 function func1(form){ document.form1.text.value =form.text.value; document.form1.file.value =form.file.value; document.form1.dummy.value =form.dummy.value; document.form1.submit(); } //*** ユーザー追加画面 function func2(form){ document.form2.text.value =form.text.value; document.form2.file.value =form.file.value; document.form2.dummy.value =form.dummy.value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <table id="table" width="100%"> <tr><th width="10%">テキスト</th><td><input type="text" name="text"> <br /> <div style="text-align:left;"> <input type="button" onClick="func2(this.form)" value="テキスト確認"> </div> </td></tr> <tr><th width="10%">添付</th><td><input type="file" name="file"></td></tr> </table> <div style="text-align:left;"> <input type="button" onClick="func1(this.form)" value="確認"> </div> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="text"> <input type="hidden" name="file"> <input type="hidden" name="dummy"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 textの内容は渡せるのですが、添付したいファイルを渡すことができません。 添付ファイルも渡せるようにするにはどうすればよいのでしょうか

  • HTML
  • 回答数5
  • ありがとう数11

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

  • ベストアンサー
  • durarara
  • ベストアンサー率47% (21/44)
回答No.5

すみません、補足の訂正です。 No.3さんのはtype="file"ではなくtype="hidden"でしたね。 申し訳ありませんでした。 あと、最近のブラウザでは、ファイル名は送信するけれども、 パスは送信しないような傾向になってきています。 だからパスが送られてくる前提のプログラムも今後は避けたほうがいいでしょう。 これもセキュリティ上の問題です。

その他の回答 (4)

  • durarara
  • ベストアンサー率47% (21/44)
回答No.4

補足です。 type="file"のvalueに対して、サーバ側で値を設定することはできません。 JavaScriptでできないのと同じ理由だと思います。 質問のソースを見ると、アップロードの仕方を処理によって分けたいため フォームも分けているということですよね。 ファイル名やサムネイルを表示できるのはアップロード後のことなので この段階では無理でしょう。 もし処理をわけたいのでしたら、 ひとつのフォームで送信してサーバ側で振り分けるか、 フォームもサーバ側のプログラムも別にするしかないのではないでしょうか。 今はAjax全盛の時期なのでJavaScriptを避ける理由は特にないと思います。 もちろんサーバ側でやったほうがいい処理まで書く必要は無いと思いますが。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.3

<input type="hidden" name="text"> <input type="hidden" name="file"> ではなく、CGIにいったん渡して、 <input type="hidden" name="text" value="なんたらかんたら">なんたらかんたら <input type="hidden" name="file" value="file:///C:\temp\abc.jpg">abc.lpg とかにすべき、 画像はサーバーのimageMagickをつかってサムネイルを表示させるとか・・ javascriptは使うべきではない。色々な面で・・

hukazuo
質問者

お礼

ありがとうございました。 なかなか複雑なのですね。

  • durarara
  • ベストアンサー率47% (21/44)
回答No.2

No.1さんの言うとおりだと思いますので、 こうしたらいかがでしょう。 //*** 送信画面 function func1(form){ form.action="sousin.php" form.submit(); } //*** ユーザー追加画面 function func2(form){ form.action="text.php" form.submit(); }

hukazuo
質問者

お礼

POST先をかえるんですね。 ありがとうございます。

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

javascriptでファイルの指定をしたいという要望でしょうか? セキュリティの問題で、まっとうなブラウザではできません。

hukazuo
質問者

お礼

ありがとうございます。 やはりできないのですね。。。。

関連するQ&A

  • formの中で別のactionをもったsubmitボタンの設置。

    formの中で別のactionをもったsubmitボタンの設置。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>sample</title> <script language="JavaScript" type="text/javascript"> <!-- //<クリックした時に実行される関数> //*** 確認画面A function func1(form){ document.form1.check[].value =form.check[].value; document.form1.submit(); } //*** 確認画面B function func2(form){ document.form2.check[].value =form.check[].value; document.form2.submit(); } //--> </script> </head> <body class="index"> <form enctype="multipart/form-data"> <input type="check" name="test[]" value="0">0 <input type="check" name="test[]" value="1">1 <input type="check" name="test[]" value="2">2 <input type="button" onClick="func2(this.form)" value="確認B"> <input type="button" onClick="func1(this.form)" value="確認A"> </form> <!-- sousin.php画面へ --> <form method="post" name="form1" action="sousin.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> <!--- text.php画面へ ---> <form method="post" name="form2" action="text.php" enctype="multipart/form-data"> <input type="hidden" name="check[]"> </form> </body> </html> 上記のように記述し、フォームの中に別のactionをもったsubmitボタンを設置しました。 チェックボックスで何と何がチェックされたかを渡したいのですが、エラーが発生します。 おそらくjavascript内の構文でcheck[]と記述してるからだと思いますが、 どのようにすれば受け渡すことができるのでしょうか。 checkのみにすると1つの値しか渡せません。

    • ベストアンサー
    • HTML
  • FormのSubmitボタン

    こんにちは。 <table align="center"> <form action="getdata.html" method="post"> <tr> <th>Customer Name :</th> <td><input type="text" name="CustNameEdit" value=""></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" name="SearchButton" value="Search"> <input type="submit" name="SearchButton" value="Show All"> </td> </tr> </form> </table> このようなフォームで、CustNameEditに文字列を入力し、Searchボタンをクリック すると、getdata.htmlでSearchButtonの値は"Search"になっているのですが、 文字列入力後、キーボードのEnterキーを押すと、getdata.htmlへは行くのですが、 SearchButton変数が存在しないと言われてしまいます。 で、この現象ですが、Internet Explorer(試したのはバージョン6.0と7.0)で 発生しますが、Operaで試してみたところ、問題ありません。 何か原因として考えられることはありますでしょうか。

    • ベストアンサー
    • HTML
  • formのボタンをsubmitしたときにアラート

    javascript で、formのボタンをsubmitしたときに アラートが出るようにしたいと思います。 下記のように作ってみましたが、うまく動きません。 どのようにすれば動くでしょうか? ご教示いただきたくお願いいたします。 <script type="text/javascript"> function(){ $('form1').submit(function(){ $.ajax({ type: 'POST', data: postData, url: 'buy.php', success: function(data){alert("購入できました");} error: function(){alert('購入できませんでした。再度お試しください');} }); return false; }); } </script> <form name="form1" id="form1" method="POST" name="form1" value="form1" action="buy.php"> <input type="hidden" name="id" value="100" /> <input type="hidden" name="name" value="高橋" /> <input type="submit" value="Save"> <form/>

  • <FORM> </FORM> の中に さらに <FORM> </FORM>があるときのSUBMITボタンについて

    今、 <FORM ACTION="aaa.asp" METHOD="POST" Name="form1"> <input type="SUBMIT" value="ボタン1"> <FORM ACTION="bbb.asp" METHOD="POST" Name="form2"> <input type="SUBMIT" value="ボタン2"> </FORM> </FORM> としていて、ボタン2を押すとbbb.aspに 飛んでほしいのでに、aaa.aspに飛んでしまいます。 こういう場合どのようにすればよいのでしょうか? それぞれのボタンは hidden の値をそれぞれの フォームの中の値を渡したいので どうしてもSubmitがいいのです。

    • ベストアンサー
    • HTML
  • 別formのhidden項目を自form値として送信したい

    同ページ内に <form name="form1" action="aa"> <input type="text" value="123"> <!-- hidden項目は無い場合もある --> <input type="hidden" name="form1_1" value="xxx"> <input type="hidden" name="form1_2" value="yyy"> <input type="submit"> </form> <form name="form2" action="bb"> <input type="text" value="456"> <input type="hidden" name="form2_1" value="www"> <input type="hidden" name="form2_2" value="zzz"> <input type="submit"> </form> といった感じのformタグをおいています。 そこで、form2を送信する時に、form1のhiddenのみform2のformValueとして送信したいのですが、どんな風に飛ばしたらよいのでしょうか? というより、from2を飛ばすときに、他のformのhidden項目があったら自formの値として送信することってできるんでしょうか? javascriptでできるんでしょうか? 素人質問ですいませんが、何か足がかりになるようなものをご教授いただければと思います。

  • 複数のsubmitボタンを使い値を送信する

    <form action="/サーブレットへ" method="post"> <input type ="TEXT" NAME="text1"> <input type ="TEXT" NAME="text2"><br> <textarea name="zzzz" cols="100" rows="10"> </textarea> <input type="hidden" name="a1" value="3"> <input type="submit" name="a1" value="作成"> <input type="hidden" name="a1" value="2"> <input type="submit" name="a1" value="修正"> </form> 複数のsubmitを使用してそれぞれ違う、値又は変数を渡し処理をしたいのですが、わかりません。 分かる方がいましたら教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • Submitが使えないFormでのデータ送信

    次のようなFORMでSubmitがなくって画像クリックし、次の画面へ いく場合ですが、どういうコードを書けばいいのでしょうか? よろしくお願いします。 <FORM name=myForm action=http://abc.com/abc.cgi method=post> <TD> <INPUT type=hidden value=itemA name=mycmd> <INPUT type=hidden value=9999 name=myid> <INPUT type=image src="/img/image.gif" border=0 name=item> </TD> </FORM>

  • form action ボタンの作り方

    form actionでボタンを作っているのですが、 a href リンクではないためか、カーソルを合わせても矢印の表記が変わりません。 具体的には以下のようなコードになっています。 <FORM ACTION="#" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="aid" VALUE=" "> <INPUT TYPE="HIDDEN" NAME="pt" VALUE=" "> <INPUT TYPE="HIDDEN" NAME="iid" VALUE=" "> <center><INPUT style="width: 200px; padding: 15px 15px; font-size: 1.2em; background-color: #2e2e2e; color: #fff; border-style: none; border-radius: 5px; border-bottom: 3px solid #000;" TYPE="submit" NAME="submit" VALUE=" "></center> </FORM> カーソルを合わせたときに矢印表記が変わるようにするためには、どのようにコードを直せばいいでしょうか。

  • ボタン別でフォームの送信先を変えたい

    同じ場所に3つある今のフォームを1つにまとめたいのですが、 「ラジオボタン」でやるのではなく「submitボタン」によって送信先の振り分けはできないのでしょうか? CGIなどを使って一旦クッションを置くのは問題ないです。何か参考になるサイトさんとかありましたら教えてください。 <form action="1.php" method="get" class="form" target="a" name="1"> <input type="hidden" name="s" value=90 /> <input type="hidden" name="t" value="e" /> <input type="text" name="moji" value="" size="8" /> <input type="submit" name="button" value="検索" /> </form> <form action="http://e.php" method="get" name="2" target="a"> <input type="hidden" name="test" value=et /> <input type="text" name="77" value="" size="8" /> <input type="submit" value="検索2" class="button" /> </form> <form action="http://8.cgi" method="get" target="a"> <input type="text" size="8" name="q" value="" /> <input type="submit" value="検索3" class="button" /> <input type="hidden" name="sut" value="JJ" /> </form>

    • ベストアンサー
    • CGI
  • submitボタンを二つ用意したい

    textに入力したものを二つのsubmitボタンで共用できるようにしたいと考えています。 作ってみたのですが、思ったように動かずに困っています。 ↓をどのように修正すれば動くでしょうか。 よろしくおねがいします。 <html> <body> <form name="hoge" action="hoge1.php" method="post"> <div class="ok_left"><input name="kw" value="" /> <script type="text/javascript"> <!-- function pushSubmit (val) { with(document.hoge){ if(val=='2'){ action = 'http://hoge.jp/hoge2.php'; } submit(); } } --> </script> <a href="javascript:pushSubmit('1');"><input name="submit1" type="submit" value="1"/></a> <a href="javascript:pushSubmit('2');"><input name="submit2" type="submit" value="2"/></a> </form> </body> </html>

    • ベストアンサー
    • HTML

専門家に質問してみよう