• ベストアンサー

複数のsubmitによって送信するデータを変える

HTML内にsubmitボタンが複数あるとします。 通常は、<FORM>タグの中の全てのデータを送信してしまいますが、 FORMタグを2つ用意しないで、 submit Aボタンはこの入力フォームの値を送信。 submit Bボタンはこの入力フォームの値を送信の様にできないものでしょうか?

  • megane
  • お礼率74% (125/168)

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

  • ベストアンサー
  • sight
  • ベストアンサー率53% (199/370)
回答No.5

>しかし、以下の文がどうしても利いていません。 >document.inForm.aTextdocument.outForm.submit(); ごめんなさいぃぃぃ!! ゴミが混じりました。 document.outForm.submit(); だけです。 なんで前にこんなのついてしまったのだろう・・・。 失礼いたしました。

megane
質問者

お礼

sightさん度々ありがとうございました。 何とかできるようになりました。 それにしても発想がおもしろくて まだまだ奥が深いなと感じています。 もっと勉強しなくては...

その他の回答 (4)

  • sight
  • ベストアンサー率53% (199/370)
回答No.4

makokoko様 >それぞれのボタンのONCLICK時に送信しないフィールドのDISABLED属性を >TRUEにすれば、送信するデータの分別はできます。 おお、なるほど!! Internet Explorer限定ですけど(ですよね??)、こんな手があったんですね。

  • sight
  • ベストアンサー率53% (199/370)
回答No.3

><A HREF="javaScript:document.aFORM.aText.submit();">送信</A> あ、これじゃ無理です。 INPUTはsubmitなんてメソッドは持っていないはずです。 submitできるのはFORM要素単位です。 <INPUT TYPE="submit">を使わないのならば、NAME属性云々、という方法は使えません。 アンカータグの中でJavaScriptでフォームをサブミットするということは、submitタイプのINPUT要素をもたないですから、存在しない要素にNAME属性を設定するなどできないはずです。 JavaScript使うんでしたら、FORM2つは必須でしょう。 あんまよくないし、動作確認もしてないけど、こんな感じ?そのままじゃ動かないかも。 JavaScriptでoutFormに書き込んでsubmitします。 TextNameの値の方にどっちのINPUTを選んだか、Textの値の方に入力した値がはいるはず。 <SCRIPT LANGUAGE="JavaScript"> <!-- function submitForm(formObj){ document.outForm.TextName.VALUE = formObj.NAME ; document.outForm.Text.VALUE = formObj.VALUE ; document.inForm.aTextdocument.outForm.submit(); } //--> </SCRIPT> <FORM NAME="inFORM"> <INPUT TYPE="text" NAME="aText"><BR> <INPUT TYPE="text" NAME="bText"><BR> <A HREF="javaScript:submitForm(document.inForm.aText);">送信</A> <A HREF="javaScript:submitForm(document.inForm.bText);">送信</A> </FORM> <FORM NAME="outFORM" action="mailto:xxxx" METHOD="post"> <INPUT TYPE="hidden" NAME="TextName" VALUE=""> <INPUT TYPE="hidden" NAME="Text" VALUE=""> </FORM>

megane
質問者

お礼

sightさん。再びありがとうございます。 なるほど。複雑ですが、プリントアウトして構造を分析してみました。 aTextフォームに"aaa"を記入し、送信したとして、 <!-- function submitForm(formObj){ document.outForm.TextName.VALUE = formObj.NAME ; /*outFORMの"TextName"に初期値として"aText"を...*/ document.outForm.Text.VALUE = formObj.VALUE ; /*outFORMの"Text"に初期値として"aaa"を...*/ つまり、outFORMの方をsubmitするわけですね! しかし、以下の文がどうしても利いていません。 document.inForm.aTextdocument.outForm.submit(); } //--> これは document.inForm.aText; document.outForm.submit(); でしょうか? どうしてもoutFORMがsubmitされません。 もう少し調べてみたいと思います。 ありがとうございました。

  • makokoko
  • ベストアンサー率50% (7/14)
回答No.2

それぞれのボタンのONCLICK時に送信しないフィールドのDISABLED属性を TRUEにすれば、送信するデータの分別はできます。 お試しあれ。

megane
質問者

お礼

回答ありがとうございます。 様々な方法でこの問題を解決したいと思いますので、 makokokoさんの方法でも試してみたいと思います。

  • sight
  • ベストアンサー率53% (199/370)
回答No.1

押されたボタンによって送るデータを選択するとなると・・・。 たぶん普通は、JavaScriptとダミーの<FORM>(hiddenエリアのみ)を2つ用意してやるんでしょうね。 FORM要素の中で名前と値を満足した要素はsubmitで全部送られてしまいますから。 submit AとSubmitBとで、別々の入力フィールドの値を送信する、という方法は存じませんが、submit AとSubmitBとに別々のNAME属性を付けて、受け取った方でどちらのsubmitボタンが押されたか判断して・・・というのではダメでしょうか?

megane
質問者

お礼

回答ありがとうございます。 sightさんの属性を付けるというヒントを元に作ってみました。

megane
質問者

補足

作ってみたFORM内だけ抜粋しますと、 <FORM NAME="aFORM" action="mailto:xxxx" METHOD="post"> <INPUT TYPE="text" NAME="aText"><BR> <INPUT TYPE="text" NAME="bText"><BR> <A HREF="javaScript:document.aFORM.aText.submit();">送信</A> <A HREF="javaScript:document.aFORM.bText.submit();">送信</A> </FORM> という風に作成したのですが、submitが利かないようです。 なかなかだめですね…。もう少し考えてみます。

関連するQ&A

  • Formタグ内で入力した情報を自動で送信したい

    <form action=xxxxx method=post> <select name="yyyyy"> <option value="zzzzz">zzzzz</option> ~中略~ <input type="SUBMIT" value="送信"> という形でformタグ内で入力したデータを送信するHTMLを書いたのですが、 このデータの送信って、SUBMITを使ったボタンで無いとできないのでしょうか? 特に操作もなく、このHTMLファイルが読み込まれたら、 Formタグ内で入力している値を、actionで指定したURLに 送信したいのですが。 ご教授よろしくお願いします。

  • このsubmitがうまくいかないんです。

    echo '<button type="submit" name="bknk" value="back">先月</button>'; echo '<button type="submit" name="bknk" value="now">当月</button>'; echo '<button type="submit" name="bknk" value="next">次月</button><BR>'; 1つのフォームに、submitボタンを1つ設けて、 押したsubmitボタンによって、 処理を分けるというのが趣旨で、 この部分は、ボタンを配置している箇所です。 (1) この式で、どれか1個を押した時、 3つのsubmit全てがデータ送信されてしまい、 3つの処理が走ってしまいます。 1つの処理だけを行いたい。 (2) さらに、送信される値は value ではなく、 ボタンの表示名の漢字部分が送信されています。 そのままボタンを押すと、漢字が送信され、以降の処理でエラーになります。 漢字部分を、value の値にすると(1)の様に動作します。 フォーム内にsubmitが複数存在してはいけないのでしょうか。 私のHTML本には複数submitを設置した時に、 どのボタンが押されたか判別する為に name と value を使えば良いとされているのですが。 なにか、根本的なところに間違いなどありませんか? どなたかご指摘お願いします。

    • 締切済み
    • PHP
  • 【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit

    【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて 【お詫び】 やたらと重く、送信ボタンを何度も押してしまい、同じ質問を何度も投稿した形になってしまい、大変申し訳ございませんでした。 それらの質問は全て削除させていただきました。 どのカテゴリで質問しようか迷いましたがこちらで・・・。 今回は画像を使用して質問します。 今回はHTML(PHP使用)に関しての質問なのですが、 図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送信されるようにしています。 ここで、※2にも同じように、A,Bの情報をPOSTで次のページに送信したいのですが、 何故かPOSTで送信されないみたいなのです。 どうにかして※2も※1と同じようにPOSTを送信したいのです。 別の質問サイトで、「押されたsubmitがどれかによって処理を分岐させる」と回答が帰ってきたのですが、javascript無しのPHPだけで以上のことができるのでしょうか? なお、HTMLのFORMタグは入れ子にしていませんし、 POST受け取り先の.phpも問題はありません。 以下、HTMLのform、input部分のソース ※1のフォームタグ内容 <form action="search.php" method="post" name ="search"> ※1ボタンの内容 <input type="submit" name="searching" value="再検索"> ※2のフォームタグ内容 <form action="result.php" method="post" name ="res"> ※2ボタンの内容 <input type="submit" name="result" value="結果表示"> まとめとして、 押されたsubmitがどれかによって処理を分岐させる方法を、 javascriptではなく、PHPのみで実装させたいのです。 どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit

    【HTML(PHP?)】複数のフォームと複数の実行ボタン(submit)の扱いについて どのカテゴリで質問しようか迷いましたがこちらで・・・。 今回は画像を使用して質問します。 今回はHTML(PHP使用)に関しての質問なのですが、 図にあるように、※1をクリックすると、その次のページにA,Bの情報がPOSTで次のページに送信されるようにしています。 ここで、※2にも同じように、A,Bの情報をPOSTで次のページに送信したいのですが、 何故かPOSTで送信されないみたいなのです。 どうにかして※2も※1と同じようにPOSTを送信したいのです。 別の質問サイトで、「押されたsubmitがどれかによって処理を分岐させる」と回答が帰ってきたのですが、javascript無しのPHPだけで以上のことができるのでしょうか? なお、HTMLのFORMタグは入れ子にしていませんし、 POST受け取り先の.phpも問題はありません。 以下、HTMLのform、input部分のソース ※1のフォームタグ内容 <form action="search.php" method="post" name ="search"> ※1ボタンの内容 <input type="submit" name="searching" value="再検索"> ※2のフォームタグ内容 <form action="result.php" method="post" name ="res"> ※2ボタンの内容 <input type="submit" name="result" value="結果表示"> まとめとして、 押されたsubmitがどれかによって処理を分岐させる方法を、 javascriptではなく、PHPのみで実装させたいのです。 どうかよろしくお願いします。

    • ベストアンサー
    • PHP
  • VBSのIEオブジェクトでフォームデータ送信する

    ■質問 通常IEオブジェクトを使ってフォームにセットされたデータを サブミットするには、 IE.Document.forms("").elements("").value = "" IE.Document.forms("").submit() と行うと思うのですが。 例えば下記のようなフォームを送信する際、 フォームのある"http://test.com/login_form" ページにわざわざ移動せず 直接"http://test.com/action"の "hidden"のエリアに対してデータを送信 する方法を教えて頂けませんでしょうか? また、Form1に複数のエレメントが存在する場合 全てのエレメントの値を送らないと正しく処理 できないでしょうか? ■"http://test.com/login_form" のHTML <form name="Form1" method="post" action="/action"> <input type="hidden" name="ID" value="1234"> <input type="submit"> </form>

  • 複数の送信ボタンと送信先

    お世話になります。 HTMLのフォームでのsubmitボタンについての質問です。 例えば1つのテキストボックスと、Aに送信、Bに送信、Cに送信という3つのボタンという構成のフォームがあり テキストボックスのデータを Aに送信ボタンをクリックするとhttp://○○○/a.cgiに Bに送信ボタンをクリックするとhttp://○○○/b.cgiに Cに送信ボタンをクリックするとhttp://○○○/c.cgiに 送信するにはどのようなHTMLを書けばよいのでしょう。 多分JavaScript使うのだろうなと思うのですけれど

    • ベストアンサー
    • HTML
  • 複数のデータを1度にsubmitするには?

    HTML初心者です。 下記の様にして、1つのsbmitで複数のデータを送りたいのですが、 後のデータ1つしか送れません。どうすればできるかお教え下さい。 *あくまで1つのsbmitボタンで同じnameの複数のデータを送りたいのですが。 ------------------------------------------------ <form method="get" action="xxx.cgi"> <input type="submit" name="leave" value="退室"> <input type="hidden" name="asyuku" value="101"> <input type="hidden" name="asyuku" value="102"> </form> ------------------------------------------------ よろしくお願いします。

  • エンターキーを押しても送信されません。

    IEで以下のソースで、検索文字を入れてエンターキーを叩いても フォームが送信されません。ちなみに、このHTMLには 他に2つのフォームもあります。IEだと複数フォームのSubmit ボタンがあるとエンターキーで送信できないのでしょうか? <form action="" method="post" name="fm3"> <input type="text" name="search_word" value="" size="56" maxlength="255" > <input type="submit" name="search_submit" value="絞りこみ" > </form> FireFoxだと、フォームの入力値が送信されるのですが・・

  • Formタグ内で与えられるデータをボタンを押すなどの操作をせずに正しく送信したい

    私の職場では、私が今学内の何処に居るのか?出社はしているのか?などを示すために、行き先表示というシステムを使っています。 この実態はHTMLで作られた簡易的なもので、実際に行き先の入力などはFormタグを使いそれをただ表示しているだけです。 ですが、例えば「帰宅」という状態は一日1回必ず起こることですし、「出社」というのも朝必ずそうなります(休暇とかを除けば)。 しかし、そういった必ず行う動作にも一々プルダウンメニューから「帰宅」を探して入力して、明日は何時に出社するのかの予定時刻を手で入力して送信ボタンを押して確認にOKを押して・・・。 とするのが非常に面倒だなぁと(面倒臭がりな性格が悪いといえば沿うかも。。。)。 しかし、自分のHPをHTML入力で作ったりする趣味程度の知識を使って作業を簡略化できたら、と思いソースをのぞいてみた所、 <form action=xxxxx method=post> <select name="行き先は?"> <option value="zzzzz">zzzzz</option> <option value="hhhhh">hhhhh</option> ・ ・ ~中略~ <input type="SUBMIT" value="送信"> といったものでした。ここで、optionタグで「帰宅」という情報だけ残して全て削除し、送信ボタンを押さずにそのHTMLファイルが開かれた時点で データをactionタグで指定したURLに送信できたらいいのでは?と思いました。 しかし、Meta http-equiv="refresh" content="秒数;url= アドレス" を使うと、Form内の情報は送信されていないようで、結果のページには何も表示されず、行き先も変更されていませんでした。 そこで、皆様に質問です。Formタグを使って入力されたデータというのは、Submitで作ったボタンなどを使ったユーザーの操作がなければ絶対に送信できないのでしょうか? 今回はボタンを押す作業を簡略化できればいいなと思ったのですが、 別のやり方ならば実現できるのでしょうか?あるのであればその方法も教えて欲しいです。 ご教授、宜しくお願いします・。

    • ベストアンサー
    • HTML
  • 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も送信するにはどのように書けばよいのでしょうか? 宜しくお願いします。