• 締切済み

document.form.actionでの処理

以下のようなソースにて、 ・<form>のactionでは"send.php"へPOSTしたい。 ・javascriptにて、<select>で選択した値をhoge.phpへ渡したい 上記の事を実現するため、 ・リストから選んだ値を画像クリックで"hoge.php"へ渡し別窓で表示 ・"text"に入力した値をsubmitで"send.php"へ渡す といった処理をしているのですが、 "hoge.php"を参照した後に"text"へ何か入力してsubmitすると 本来send.phpへとぶはずが、"hoge.php"へとんでしまいます。 何が原因なのか、また最良を方法がありましたら ご教授頂ければと思います。 <script> <!-- function form_submit(url){ document.form.action=url; document.form.target = "_blank"; } //--> </script> | <FORM METHOD="POST" name="form" action="send.php"> <SELECT name="sel"> <OPTION value="001">001</OPTION> <OPTION value="002">002</OPTION> </SELECT> <input type="image" src="sub.gif" onClick="javascript:form_submit('hoge.php')"> <input type="text" name="text"> <input type="submit" value="送信"> </FORM> |

  • efqeq
  • お礼率33% (1/3)

みんなの回答

  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

> 上記のコードにて、"hoge.php"をサイズ指定やツールバー有無を指定し > オープンさせることは可能なのでしょうか? はい、window.open と FORM の target 属性を使うことで実現できます。 ウィンドウスタイルの指定は window.open でしかできませんから、送信前にまず window.open をします。その際、2番目の引数に「ウィンドウ名」を指定します。 そのウィンドウ名を FORM の target にも指定しておけば、送信先が先ほど開いたウィンドウになる、という寸法です。 No.1 のコードを、次のように変更して下さい。 ・「function submit_hoge() {」 の次の行に、 window.open("about:blank", "hogewin", "ウィンドウスタイル"); を追加。 ・hoge.php 起動用フォームの target の値を "hogewin" に変更。 ※ウィンドウスタイルについては参考URLをご参照下さい。

参考URL:
http://www.tohoho-web.com/js/window.htm#OpenPage
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

HTMLに書かれた action の値は「初期値」であり、JavaScript などで変更すればその値になってしまいます。画像をクリックした時に action の値を変更してますから、その後に submit ボタンを押せば hoge.php に飛んでしまうのは当然です。 回避策として、送信後に元の値に戻すよう細工してもよいのですが、hoge.php 用に別のフォームを用意してそちらを送信するようにした方が簡明でしょう。 <script type="text/javascript"> <!-- function submit_hoge() { document.form_hoge.sel.value = document.form_send.sel.options[document.form_send.sel.selectedIndex].value; document.form_hoge.submit(); } // --> </script> <form name="form_send" action="send.php" method="post"> <select name="sel"> <option value="001">001</option> <option value="002">002</option> </select> <img src="sub.gif" onclick="submit_hoge()"> <input type="text" name="text"> <input type="submit" value="送信"> </form> <form name="form_hoge" action="hoge.php" method="post" target="_blank"> <input type="hidden" name="sel" value=""> </form> hoge.php 起動用のフォームには hoge.php が必要とするパラメータを全て hidden で用意しておき、画像がクリックされたら必要な値を form_send から form_hoge にコピーして form_hoge を送信します。 ※画像は単なるトリガーであり、イメージボタンである必要がないので IMG に変えました。

efqeq
質問者

補足

補足というか、追加で質問なのですが、 上記のコードにて、"hoge.php"をサイズ指定やツールバー有無を指定し オープンさせることは可能なのでしょうか?

関連するQ&A

  • 複数formの使用について

    お世話になります。 複数のFORMを入れ子で使用する方法はありますでしょうか? 下記の記述だと外側のFORMが無効になってしまいます。 表示の順は以下のようにしたいです。 aaa.phpへPOST変数でデータを受け渡して使用します。 <form method="post" name="test1" action="aaa.php"> <input type="text" name="text01" id="textA" value="10"> <input type="text" name="text02 id="textA" value="20"> <input type="text" name="text03" id="textA" value="30"> (上のinputタグ数は動的に変わります) <form method="POST" name="test2" action="bbb.php"> <select name="select"> <option>selectA</option> <option>selectB</option> <option>selectC</option> <input type="submit" name ="read" value="読込"> </select> </form> <input type="submit" value="保存" > </form> 以上、よろしくお願いいたします。

    • 締切済み
    • PHP
  • 一つのformで、複数のaction指定

    レイアウトなどの関係で、formの配置が基本とは異なるものになってしまい、うまく動作させる方法が見つからず困っています。 現在は <form> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> </form> …… <form method="POST" action="A.php"> <input type="submit" name="aa" value="あああ"> </form> <form method="POST" action="B.php"> <input type="submit" name="bb" value="いいい"> </form> <form method="POST" action="C.php"> <input type="submit" name="cc" value="ううう"> </form> <form method="POST" action="D.php"> <input type="submit" name="dd" value="えええ"> </form> のようになっていて、チェックボックスの値を送信したいのは、Dのボタンを押したときだけPOSTされるようにしたい状態です。 この値を取得する方法か、もしくは <form method="POST" action="(ボタンに応じたもの)"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> <input type="checkbox" name="select[]" value="●●"> …… <input type="submit" name="aa" value="あああ"> <input type="submit" name="bb" value="いいい"> <input type="submit" name="cc" value="ううう"> <input type="submit" name="dd" value="えええ"> </form> このように、一つのフォームの中に埋めてしまい、actionに入る値をボタンによって分ける方法はありませんでしょうか? もしくは他の方法でも構いません。 お分かりの方がいましたら、是非ご教授お願いいたします。

    • 締切済み
    • PHP
  • form nameをform actionにしたいんですが・・・

    <html> <head> <title> 商品確認 </title> <script language ="JavaScript"> <!-- function calc(amount){ document.ball.total.value = 4095 * eval(amount); }//--> </script> </head> <body> <form name=ball method="post"> //←ここをform action="x.php"にしたい。 V4SLBL ソフトタッチ鈴入り4号球<br> <hr> 個数: <select name ="num" onchange = "javascript:calc(this.value)"> <option value =0>0 <option value =1>1 <option value =2>2 <option value =3>3 <option value =4>4 <option value =5>5 </select> 小計: <input type="text" size="8" name="total">円<br> <hr> </form> </body> </html> 上の場所をaction="x.php"にしてx.phpに小計を送ろうとしています。 しかし、actionにすると小計が表示されなくなります。 いろいろ考えましたが全く答えが出てきません。 アドバイスよろしくお願いします。

  • Formの「action」属性を取得したいけれども「action」という名のオブジェクトが存在している

    非常に困っています!よろしくお願いいたします。 以下のように「action」という名前のオブジェクトがあります。 <form name="form1" method="post" action="hoge.htm"> <input type="hidden" name="action" value="test"> <input type="submit" name="submit" value="OK"> </form> javascriptでaction属性「hoge.htm」を取得したいのです。そのため以下のようにコーディングしました。 alert(document.form1.action); 結果は「object」と表示されます。どうやらactionオブジェクトを対象としてしまうらしいのです。 action属性を取得する方法をお教えいただけないでしょうか。よろしくお願いいたします。

  • formタグのactionを切り替えたい。

    現在、formの作成で悩んでいます。 例えば (1)魚を検索(action="fish.php") (2)肉を検索(action="meat.php") (3)野菜を検索(action="vegetables.php") の3つがあり、それぞれactionが上記の様に別だとします。 これを一つのフォームで検索をしたいと考えています。 <form action="ここを切り替えたい" method="get"> <select class="" name="search_type" id="search_type"> <option value="fish">魚</option> <option value="meat">肉</option> <option value="vegetables">野菜</option> </select> <input name="search_keyword" id="search_keyword" value="" type="text"> <input src="search_button.gif" alt="検索" type="image"> </form> 上記の様なhtmlだとして、selectの選択によってactionを切り替え検索をしたいと思っています。 色々とgoogle等で検索してみたのですが、良い方法が見つからず皆様のお力をお借りしたく、投稿しました。 是非とも、ご教授とご指導を宜しくお願い致します。

  • 1つのformに複数のaction

    質問です。 下のようにiframeが2つあり、一つのformによる結果をそれぞれに反映させる検索ページ(kensaku.php)があります。 <script> function sample(F) { F.action = 'ichiran_map.php' F.target = 'ichiran_map' F.submit(); setTimeout(function(){ F.action = 'ichiran.php' F.target = 'ichiran' F.submit(); },1); return false; } </script> <iframe src="A.php" name="A" > <iframe src="B.php" name="B" > <form method="post" onsubmit="return sample(this)"> <select name="area"><option selected value="">エリア選択 </option> <option value="01">あいうえお</option> <option value="02">かきくけお</option> </select> <select name="price"> <option selected value="">価格帯選択</option> <option value="01">1000円未満</option> <option value="02">1001円~2000円</option> <input type=submit value="絞込" /></form> 別のページ(例えばindex.php)に同じようなformを作り、検索結果をこの検索ページに反映させたいと思います。この場合、一つのformに3つのactionを設定したいのですが、どうすれば実現できるでしょうか? 表示画面はkensaku.phpにしたいのですが、そのkensaku.phpにある2つのiframe(A.phpとB.php)にformで指定した値を反映させたいのですが、どうすれば実現できるのでしょうか?どなかた教えて下さい。

  • form 内 onChange

    恐れいります。 <form>内で、もう一つ<form>を作成し、送信したいのですが、 なかなかうまくいきません。form内のformは、selectボックスで、選択時に自ページにsubmitさせるようにしたいのですが。。 <form action="./xxx.cgi" method="POST"> <input type="text" name="xxx"> <form action="./" method="POST"> <select name="YYY" onChange="this.form.submit()"> <option value="ddd">ddd <option value="eee">eee </select></form> <input type="text" name="xxx"> <input type="submit" value="送信"> </form> よろしくお願いします。

    • ベストアンサー
    • HTML
  • formを連続してピッタリと上下に並べたいのですが

    DreamveaverでHTMLの編集をしております。 formを連続してピッタリと上下に並べたいのですが、 どうしてもformとformの間に隙間ができてしまいます。 これは仕方がないのでしょうか? 具体的には <form name="form1" method="post" action=""> <select name="select1"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> <form name="form1" method="post" action=""> <select name="select2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type=submit value="order"> </form> な感じなんですが。 どなたかアドバイスいただけると嬉しいです。

  • 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
  • 複数のフォームから送信

    複数のフォームからtextの値を送信したいのですができますか?〒番号を入力して検索ボタンをおすと住所がでてきて最後に登録をしたいです。検索だけのプログラムはできてますがフォームを二つにすると両方のsubmitが登録になります・・・ 一応自分でいろいろためしましたがだめでした。。。 html,php,javascriptです。 二つともだめでした。。。。 rei1.php ------------------------- <html> <body <form method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> <br> <form method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> -------------------------------------- rei2.php -------------------------------------- <html> <head> <script language="javascript"><!-- function send() { document.nform.submit(); document.nform2.submit(); document.nform3.submit(); } //--></script> </head> <body> <form name="nform" method="POST" action="1.php"> お名前:<input type="text" name="name"> <br> </form> <form name="nform2" method="POST" action="yubin.php"> 〒:<input type="text" name="yubin"> <input type="submit" value="検索"> <br> 住所:<input type="text" name="zyu"> <br> </form> <form name="nform3" method="POST" action="1.php"> メールアドレス:<input type="text" name="email"> <br> <input type="submit" value="登録する"> </form> </body> </html> ------------------------------------