• 締切済み

他フォームの入力データの引継ぎ

入力フォームを2つ用意し 第1フォームの入力欄の1部を第2フォームの入力欄のデータとして submitさせたいのですが <INPUT TYPE="radio">と<SELECT>の入力値がうまく引継げません。 下記のようなJavaスクリプトとHTMLなのですが Javaスクリプトで「value」を=にすると 「radio」のほうはundefin、 「SELECT」で複数選択した場合は、一つ目の選択肢のみしか 引継げませんでした。 Javaスクリプトでうまくいく方法がありましたら ご教示ください。 ----Javaスクリプト-------------------------------- function aaa() { document.FROM2.A.value = document.FROM1.A.value; document.FROM2.B.value = document.FROM1.B.value; document.FROM2.C.value = document.FROM1.C.value; document.FROM2.submit(); } ----HTML-------------------------------- <FORM NAME="FROM1" METHOD="POST" ACTION="***"> <SELECT NAME="A" MULTIPLE> <OPTION VALUE="aa">セレクトa <OPTION VALUE="bb">セレクトb <OPTION VALUE="cc">セレクトc <OPTION VALUE="dd">セレクトd </SELECT> <INPUT TYPE="radio" NAME="B" VALUE="" CHECKED>選択なし <INPUT TYPE="radio" NAME="B" VALUE="1" CHECKED>ラジオ1 <INPUT TYPE="radio" NAME="B" VALUE="2" CHECKED>ラジオ2 <INPUT TYPE="text" NAME="C"> <INPUT TYPE="text" NAME="D"> <INPUT TYPE="submit" NAME="OK_BTN" VALUE="OK"> </FORM> <FORM NAME="FROM2" METHOD="POST" ACTION="***"> <INPUT TYPE="hidden" NAME="A"> <INPUT TYPE="hidden" NAME="B"> <INPUT TYPE="hidden" NAME="C"> <INPUT type="button" onClick="JavaScript:aaa();" name="OK_BTN" value="OK"> </FORM>

  • lsdp
  • お礼率25% (7/28)

みんなの回答

回答No.5

すいません。MULTIPLEを見逃してました。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

失礼。#3です 下から6行目で書き漏れ f2.options[ii] = new Option("test",f1.options[ii].value); ↓ f2.options[ii] = new Option("test",f1.options[ii].value); f2.options[ii].selected = true; selectedがtrueでないとpostしたとき値が取れませんね。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

僕もいろいろと突っ込みたいのですが全部スルーすることにします。^^; 少々邪道なやり方ですが、cssでdisplay:noneを指定すると表示されなくなることを利用して 擬似的なhiddenを作成することが出来ます。対応していないブラウザだと不恰好になりますが。 <form id="FROM1" action="" method="POST">  <select id='field1' size=10 multiple>  <option value=1>test1</option>  <option value=2>test2</option>  <option value=3>test3</option>  </select> </form> <form id="FROM2" action="" method="POST">  <div style="display:none">   <select id='field2' multiple></select>  </div> </form> <input type='button' value='up' onclick='on()' /> <script type='text/javascript'><!-- function on() {  var f1 = document.getElementById('field1');  var f2 = document.getElementById('field2');  for(ii=0;ii<f1.length;ii++) {   if(f1.options[ii].selected) {    f2.options[ii] = new Option("mogemoge",f1.options[ii].value);   }  }  document.getElementById('FROM2').submit(); } // --></script>

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

つっこみどころが多いので細かく解説するのはやめますが、 配列データをtextに落とすのですから仕様をきめなおさないといけません。 たとえばカンマ区切りにするなら以下のようにしてください (hiddenだとデバッグしにくいのでtextにしてあります。実際にはhiddenでも動きます) <script> function aaa(f2) { var f1=document.getElementById("FROM1"); var f1a=f1.A; f2.A.value=""; for(var i=0;i<f1a.length;i++){ if(f1a[i].selected) f2.A.value+=(f2.A.value==""?"":",")+f1a[i].value; } var f1b=f1.B; f2.B.value =""; for(var i=0;i<f1b.length;i++){ if(f1b[i].checked) f2.B.value+=(f2.B.value==""?"":",")+f1b[i].value; } f2.C.value = f1.C.value; return true; } </script> <form id="FROM1" method="post"> <select name="A" multiple> <option value="aa">セレクトa</option> <option value="bb">セレクトb</option> <option value="cc">セレクトc</option> <option value="dd">セレクトd</option> </select> <input type="radio" name="B" value="" checked>選択なし <input type="radio" name="B" value="1" checked>ラジオ1 <input type="radio" name="B" value="2" checked>ラジオ2 <input type="text" name="C"> <input type="submit" value="OK"> </form> <form id="FROM2" onSubmit="return aaa(this);"> <input type="text" name="A"> <input type="text" name="B"> <input type="text" name="C"> <input type="submit" value="OK"> </form>

回答No.1

AとBはどちらも配列になっています。 Aの取得は以下。 var a = '選ばれてない'; if (document.FROM1.A.selectedIndex > -1) { a = document.FROM1.A.options[document.FROM1.A.selectedIndex].value; } Bの取得は以下。 var b = '選ばれてない'; var n = document.FROM1.B.length; for (var i=0;i<n;i++) { if (document.FROM1.B[i].checked) { var b = document.FROM1.B[i].value; } } こんな感じでやってみてはいかがでしょうか。

lsdp
質問者

お礼

ありがとうございます。 radioのほうは、うまく入力値をとることができました。 SELECTのほうは、やはり2つ以上選択すると 1つ目の選択した値しかとることが出来ませんでした。 radioと同じように下記のようにしてみましたが エラーとなりました。 (FROM2のほうが「TYPE="hidden"」だからと思います。 ) 他に何か策はありますでしょうか。。。 var n = document.FROM1.A.length; for (var i=0;i<n;i++) { if (document.FROM1.A[i].selected) { document.FROM2.A[i].value = document.FROM1.A[i].value; } }

関連するQ&A

  • フォームに入力したデータの受け渡しについて

    左右に分かれたフレームを使用したページ作成を検討しています。 左フレーム内のフォームへ入力したテキストやチェックボックスのデータを、 右フレームに設置した1つのテキストエリアへコピーボタンで受け渡しを行う方法を探しています。 テキストボックス1行だけの受け渡しはできるのですが、 複数のテキストエリアやチェックボックスを使用した場合の受け渡し方法をご教示いただきたけますでしょうか? 左フレームとしては↓のような内容を想定しています。 <html> <form> テキスト:</br> <input type="text" name="aaa" /></br> ラジオ:</br> <input type="radio" name="bbb" value="radio1" checked="checked" /> ラジオ1 <input type="radio" name="bbb" value="radio2" /> ラジオ2</br> チェック:</br> <input type="checkbox" name="ccc" value="check1" /> チェック1 <input type="checkbox" name="ccc" value="check2" /> チェック2</br> 選択項目:</br> <select name="ddd"> <option>A</option> <option>B</option> </select></br> テキストエリア</br> <textarea name="eee" rows="2" cols="15">テキストエリア1</textarea> </br> <input type="submit" value="送信" />  <input type="reset" value="リセット" /> </form> </html> よろしくお願いいたします。

  • ラジオボタンでうまくするには・・・・

    初めまして。 現在下記のプルダウン形式で、一つの価格が同じなので問題なく動くのですが <FORM action="cart/sys/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> <SELECT name=sur> <OPTION value="" selected>購入数量</OPTION> <OPTION value=1>1</OPTION> <OPTION value=2>2</OPTION> <OPTION value=3>3</OPTION> <OPTION value=4>4</OPTION> <OPTION value=5>5</SELECT> <INPUT type=submit value=カートに入れる> </FORM><BR> <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=hidden value=2000 name=tan> </FORM> 同じ商品で1・2・3・4・5のそれぞれに単価が変わる設定をしたいのですが、うまくいく方法が見つからないです。 ラジオボタン形式で作ってみたものの・・・・ <FORM action="・・・/cart.cgi" method="post"> <INPUT type=hidden value=005 name=num> <INPUT type=hidden value=●●● name=name> <INPUT type=submit value=カートに入れる> </FORM> <FORM> <INPUT type="radio" name="name1" value="2000">1袋<BR> <INPUT type="radio" name="name1" value="3900">2袋<BR> <INPUT type="radio" name="name1" value="5800">3袋<BR> <INPUT type="radio" name="name1" value="7500">4袋<BR> <INPUT type="radio" name="name1" value="8500">5袋</FORM> としてみましたがうまくいきません。 なにか方法ございましたら、ご教授いただければと思います。

    • ベストアンサー
    • HTML
  • ボタンを押したらラジオボタンを選択したい(サンプルソース付)

    ボタンを押したら、ラジオボタンを選択するようにしたいと思っています。 なんとかチェックボックス、セレクトボックス(?)はうまくいったのですが、どうしてもラジオボタンだけがうまくいきません。どうすればよいでしょうか? ※document.forms[0].R1[0].checked = true; のようにすると意図した通りに動作することはわかったのですが、項目が増えた時にミスの原因になりますので、できるだけ"a"や"b"とvalueを使いたいと思っています。 すみませんが、よろしくお願いします。 -- <html> <head> <SCRIPT language="JavaScript"><!-- function check() { document.forms[0].C1.checked = true; document.forms[0].S1.value = "3"; document.forms[0].R1.value = "a"; } //--></SCRIPT> <title></title> </head> <body> <form> <input type="checkbox" value="yes" name="C1"><br> <select name="S1"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select><br> <input type="radio" name="R1" value="a"><input type="radio" name="R1" value="b"><br> <input type="button" onclick="javascript:check()"> </form> <br> </body> </html>

  • select値をhiddenのvalueに渡したい

    selectで選択されたvalue値を下のhiddenのvalue値(id)に渡して、 hiddenのvalue値(id)がselectで選択されたvalue値になるような フォームを作りたいのですが、作り方をお教え頂ければ幸いです。 <form name="form" method="get" action="index.cgi"> <select name="mode"> <option value="100023">和書</option> <option value="100241">洋書</option> <option value="100524">エレクトロニクス</option> </select> <input type="hidden" name="serch_janru" value="id" /> <input type="text" name="keyword" value="keyword" /><input type="submit" name="submit" value="商品を検索" /> </form> ソース等、具体的にお教え頂けると助かります。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • HTML
  • フォームについて

    <form action="test.php" method="GET"> <input type="hidden" name="page" value="1"> <input type="submit" value="index"></form> <form action="test.php" method="GET"> <input type="hidden" name="page" value="1"> <input type="submit" value="index"></form> --------------------------------------------- このようにして書くと、どうしてもボタンが縦に並んでしまいます。どのようにすれば横一列に並べる事が出来るでしょうか?

    • ベストアンサー
    • HTML
  • javascriptでフォーム要素の状態を制御

    いつもお世話様です。 phpでフォームを構成しています。 フォーム内のradioボタンの状態で、以降のラジオボタン、プルダウン、テキスト入力を 制御したいです。 <制御内容(やりたいこと)> situmon.phpで、 q1のラジオボタンが1の場合は、q2は回答しなくていい。 (2の場合だけ回答させる。) q3のチェックボックスが1でない場合は、プルダウンとテキストは入力しなくていい。 (1の場合だけ回答させる。) <現状のソース> ちなみに、該当するjavascript部分は、いろいろなサイトをみて、 いろいろ書き換えて試しましたが、どうもうまくいかず、 断念した段階そのままの状態です。 よって、ご回答はこれをベースにしなくても大丈夫です。 よろしくお願いします。 ---situmon.php--- <script type="text/javascript"> <!-- function Check() { document.form.elements["q2"][1].disabled = (!document.form.elements["q1"][2].checked); document.form.elements["q2"][2].disabled = (!document.form.elements["q1"][2].checked); document.form.elements["q2t"].disabled = (!document.form.elements["q1"][2].checked); } // --> </script> <body> <form name="form"> <!-- q1 --> <input type="radio" name="q1" id="q1" value="1" onclick="check();"/>はい <input type="radio" name="q1" id="q1" value="2" onclick="check();"/>いいえ <!-- q2 --> <input type="radio" name="q2" id="q2" value="1" />なぜ1 <input type="radio" name="q2" id="q2" value="1" />なぜ2 (その他: <input type="text" name="q2t" id="q2t" value="<php echo h(@$q2t); ?>" />) <!-- q3 --> <input type="checkbox" name="q3c" value="1" />楽しかった <select name="q3s"> <option value="" />▼選んで <option value="1" />めちゃめちゃ <option value="2" />めっちゃ <option value="3" />めちゃ </select> その他なにかあったら書いて <textarea name="q3t" id="q3t"><?php echo h(@$q3t); ?></textarea> </body>

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

    同じ場所に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
  • アンケートフォームの作り方

    アンケートフォームを作りたいのですが、以下のプログラムにおいてのoutput.php の作り方がわかりません。最終的には、アンケート結果を出力(最後の質問の見る回数に関しては、これまでの平均をだす)をしたいとおもっています。http://www.standpower.com/php_form.htmlを参考にしてつくってみたもののうまくいきません。というのも、そのページに書かれている質問は1つしかないので、今回のように3つ質問があるとどうすればいいのかわからないからです。どなたか教えていただけないでしょうか? <html> <body> <b>あなたの年齢を教えてください</b> <form method = "post" action = "output.php"><br> <input type = "radio" name = "toshi" value = "1" checked>10代<br> <input type = "radio" name = "toshi" value = "2" >20代<br> <input type = "radio" name = "toshi" value = "3" >30代<br> <input type = "radio" name = "toshi" value = "4" >40代<br> <input type = "radio" name = "toshi" value = "5" >50代<br> <input type = "radio" name = "toshi" value = "6" >60代<br> <input type = "radio" name = "toshi" value = "7" >70歳以上<br><br> <b>お昼によくみる番組は?</b><br> <input type = "radio" name = "type" value = "8" checked>ピンポ<br> <input type = "radio" name = "type" value = "9" >スクランブル<br> <input type = "radio" name = "type" value = "10" >笑っていいとも<br> <input type = "radio" name = "type" value = "11" >おもいっきりいいTV<br><br> <b>週に何回見ますか?</b><br> <input type = "text", name = "test_about_other" maxlength="100"><br><br> <INPUT TYPE="submit" VALUE="送信"> <INPUT TYPE="reset" VALUE="やり直し"<BR><BR> </form> </body> </html>

    • ベストアンサー
    • PHP
  • 検索時の選択内容を保持する方法 2

    昨日こちらのURL『http://okwave.jp/qa/q6477112.html』にて質問させていただきました。 ご回答を締め切らせていただいたため、誠に勝手ながら新たに質問の方させていただきました。 PHP検索フォーム、検索時の選択内容を保持する方法にて、先日ご回答いただいた 下記のコードを基本として利用しているのですが、 <? //checkbox if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked"; if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked"; //radio if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked"; //select if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected"; print <<<eof <form> <input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A <input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B <input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1 <input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2 <input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3 <select name="test_d"> <option value="">---</option> <option value="1"{$selected["test_d"][1]}>D-1</option> <option value="2"{$selected["test_d"][2]}>D-2</option> <option value="3"{$selected["test_d"][3]}>D-3</option> </select> <input type="submit" value="go"> </form> eof; ?> 複数選択のチェックボックスがある場合の方法をご存じの方いらっしゃいましたら、 是非ともご教授お願い致します。 複数チェックボックスは、 <input type="checkbox" name="bungu[0]" value="鉛筆" >鉛筆 <input type="checkbox" name="bungu[1]" value="定規" >定規 <input type="checkbox" name="bungu[2]" value="色鉛筆" >色鉛筆 <input type="checkbox" name="bungu[3]" value="ペン" >ペン <input type="checkbox" name="bungu[4]" value="絵具" >絵具 <input type="checkbox" name="bungu[5]" value="ハサミ" >ハサミ <input type="checkbox" name="bungu[6]" value="ボールペン" >ボールペン というようなものを利用しています。

    • ベストアンサー
    • PHP
  • アドレスバーからの入力ログイン

    Kentさんのトピックスボードを使用してます。 管理者ログインでパスワード入力→ログインは通常当たり前ですが、 これをアドレスバーよりどうしてもリンクから直接入力しログインさせたいのですが、どのように直接入力させたらよいでしょうか? <form action="admin.cgi" method="POST"> <input type=hidden name=mode value="admin"> <select name=job> <option value="form">投稿 <option selected>修正</option> </select> <input type=password name=pass size=6> <input type=submit value="Admin"> </form>

専門家に質問してみよう