• 締切済み

ウィンドウからウィンドウへ、フォームからフォームへデータの受け渡し。

あるページにボタンを用意し、そのボタンをクリックすることで、 新しいウィンドウが開くようにしました。 あるページを001.html ,新しいページを002.htmlと仮にします。 001.htmlのボタンのフォームのトコロに、hiddenで たとえば、「この文章を渡す」と記述しておきます。 そして、新しく開いたウィンドウの中のフォームにhidden で渡したいのですが、どのようにしたらいいのですか? 文章記述が曖昧でごめんなさい。補足要求があれば、 しますので、お願いします。 001.htmlにたとえば数学の問題があったとします。そうして、 その問題に対して質問があれば、そのページのボタンを クリックして質問してもらいたい。そのときに、何の問題かを 毎回書いてもらうのは面倒だと思い質問したのです。

みんなの回答

  • itomizu
  • ベストアンサー率47% (8/17)
回答No.9

代入ならjavascriptで可能ですね。 #7の001.htmlはこんな感じで改良しました。 (001.html) <html> <head> <script type="text/javascript"> <!-- var title = "この文章を渡す" function substitute() { document.f1.msg.value = title; } --> </script> </head> <body onload = "substitute()"> <form name = "f1"> <input type = "button" value = "送信" onclick = "window.open( '002.html?msg=' + escape( document.f1.msg.value ), '_blank', 'width=200,height=200,status=no' )"> <input type = "hidden" name = "msg"> </form> </body> </html> 002.html変更無し。 今回は#6の環境+Mozilla1.4でも確認済みです。

すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.8

javascriptの変数ですね。 あ、よく考えたら子ウインドウから親ウインドウの変数を参照すればよかった。 --001.html--- <script language=javascript> var v1 = "この文章を渡す"; </script> <form> <input type="button" onclick='alert(v1)'> <input type="button" onclick='window.open("002.html")'> </form> --002.html--- <form name="f1"> <input type=button onclick="alert(opener.v1)"> </form>

すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.7

#6です。 ゴメン、補足見落としです。 幅=300,高さ=200,ステータスバー等非表示です。 (001.html) <html> <body> <form name = "f1"> <input type = "button" value = "送信" onclick = "window.open( '002.html?msg=' + escape( document.f1.msg.value ), '_blank', 'width=300,height=200,status=no' )"> <input type = "hidden" name = "msg" value = "この文章を渡す"> </form> </body> </html> 002.htmlは変更無し。

arrangemental_jp
質問者

お礼

CGIとかだと、適当にはじめの方に、 $title=**タイトル***; などと指定しておけば、後で、「$title」が変数として扱えるので、代入とかは楽なのですが、HTMLではどうやってやったらいいのでしょうか? タイトルを、そのままフォームの「この文章を渡す」のところに代入したいのですが、どうやってやったらいいですか?

arrangemental_jp
質問者

補足

大変ありがとうございます。データを別のフォームに渡すことができました。ありがとうございました。 何度も何度も改良を重ねて頂いて、私はとてもうれしくうれしく思ってます。

すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.6

#2です。 新しいウィンドウって書いてましたね。 すみません。見落としてました。 (001.html) <html> <body> <form name = "f1"> <input type = "button" value = "送信" onclick = "window.open( '002.html?msg=' + escape( document.f1.msg.value ) )"> <input type = "hidden" name = "msg" value = "この文章を渡す"> </form> </body> </html> (002.html) <html> <head> <script type="text/javascript"> <!-- function form(){ var len = location.search.length; var eql = location.search.indexOf( "msg" ); var rsl = location.search.substring( eql + 4, len ); document.f2.txt.value = unescape( rsl ); } --> </script> </head> <body onload = "form()"> <form name = "f2"> <input type = "text" name = "txt"> </form> </body> </html> でどうでしょう? (WinXP+IE6.0,NN7.0,Opera7.11で確認済み)

すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.5

#1はIE限定でした。 今回は子ウインドウのJavascript変数に渡してみました。 (Windows200+IE5, NN4.78で確認済み) --001.html--- <form> <input type="button" onclick=' var w = window.open("002.html"); w.document.v1="この文章を渡す"; '> </form> ---002.html-- <script language="javascript"> var v1 = "hoge"; </script> <form name="f1"> <input type=button onclick="alert(v1)"> </form>

arrangemental_jp
質問者

補足

とてもありがとうございます。質問してとてもイイ回答が返ってきてうれしく思っています。 もう一つ質問なのですが、 CGIとかだと、適当にはじめの方に、 $title=**タイトル***; などと指定しておけば、後で、「$title」が変数として扱えるので、代入とかは楽なのですが、HTMLではどうやってやったらいいのでしょうか? タイトルを、そのままフォームの「この文章を渡す」のところに代入したいのですが、どうやってやったらいいですか?

すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.4

また間違えた。 document.f1.msg2.value = escape( document.f1.msg1.value ); だった。 ごめんなさい。

すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.3

#2です。 ちょっと訂正。 document.f1.msg2.value = escape( document.f.msg.value ); ではなくて document.f1.msg2.value = escape( document.f1.msg.value ); でした。

すると、全ての回答が全文表示されます。
  • itomizu
  • ベストアンサー率47% (8/17)
回答No.2

hiddenで渡したいという要望のようですので。 (001.html) <html> <head> <script type="text/javascript"> <!-- function esc(){ document.f1.msg2.value = escape( document.f.msg.value ); } --> </script> </head> <body onload = "esc()"> <form action = "002.html" method = "get" name = "f1"> <input type = "submit" value = "送信"> <input type = "hidden" name = "msg1" value = "この文章を渡す"> <input type = "hidden" name = "msg2"> </form> </body> </html> (002.html) <html> <head> <script type="text/javascript"> <!-- function form(){ var len = location.search.length; var eql = location.search.indexOf( "msg2" ); var rsl = location.search.substring( eql + 5, len ); document.f2.txt.value = unescape( unescape( rsl ) ); } --> </script> </head> <body onload = "form()"> <form name = "f2"> <input type = "text" name = "txt"> </form> </body> </html> でどうでしょう?

arrangemental_jp
質問者

補足

<form action = "002.html" method = "get" name = "f1">  でページを移るのではなく、指定した大きさで、ステータスバーなどの表示をなくして、新しいウィンドウを開くにはどうしたらいいのですか?

すると、全ての回答が全文表示されます。
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

-- "001.html" --- <form> <input type="button" onclick=' var w = window.open("002.html"); w.document.f1.t1.value="この文章を渡す"; '> </form> -- "002.html" -- <form name="f1"> <input name="t1"> </form>

arrangemental_jp
質問者

補足

この方法でやってみましたが、代入されませんでした。 教えて頂けますか?

すると、全ての回答が全文表示されます。

関連するQ&A