質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

9442閲覧

javascriptで親->子->親ウインドウへ値を渡す方法

natlpush

総合スコア32

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/11/02 08:58

PHPプログラムにて、javascriptで子ウインドウを開き、その子ウインドウの値を親ウインドウに渡します。この時に、親ウインドウの値を子ウインドウに渡し、その値をもとに子ウインドウで値を変化させて戻したいと思っています。

子ウインドウから親ウインドウへの値渡しはできるのですが、最初の親から子への値渡しの方法がわからず困っています。

やりたいことは、親ウインドウで不確定な要素(会員ID・姓・名)を子ウインドウに渡し、検索して候補のリストを表示。その中から選択して親ウインドウのフォームを上書きし、別のファイルへPOSTするということです。

下が、子から親への値渡しのみのスクリプトです。

↓親ウインドウ

<form action="post_sql.php" method="post" name="regular_match"> <table> <tr> <td>クラスマスタID</td> <td>会員ID</td> <td>姓</td> <td colspan="3">名</td> </tr> <tr> <td><input type="text" name="クラスマスタID" size="5"></td> <td><input type="text" name="会員ID" size="5"></td> <td><input type="text" name="姓" size="5"></td> <td><input type="text" name="名" size="5"></td> <td><input type="button" value="会員検索" onClick="window.open('search.php','search','menubar=no,height=400,width=300');"></td> <td><input type="submit" value="登録する" /></td> </tr> </table> </form>

↓子ウインドウ

<script language="javascript"><!-- function member_id(n) { window.opener.document.regular_match.会員ID.value=n; window.close(); } //--></script> <table> <tr> <th>顧客コード</th> <th>顧客名称</th> </tr> <tr> <td><a href="javascript:member_id('0001')">0001</a></td> <td>ABC商店</td> </tr> <tr> <td><a href="javascript:member_id('0002')">0002</a></td> <td>DEF商店</td> </tr> </table>

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

確実なのはphpが使える環境なのですから子ウィンドウにサブミットすることですね
javascriptでどうしても渡したい場合こんな感じで処理してください

送り元

HTML

1<script> 2function send(){ 3 var myWin=window.open('search.php','search','menubar=no,height=400,width=300'); 4 var timerId=setInterval(function(){ 5 if(myWin.document.readyState=="complete"){ 6 clearInterval(timerId); 7 myWin.document.getElementById('fuga').value=document.getElementById('hoge').value; 8 } 9 },100); 10} 11</script> 12<input type="text" value="aaa" id="hoge"> 13<input type="button" value="send" onclick="send()"> 14

受け先

HTML

1<input type="text" id="fuga">

追記

よくよく考えれば、受け側で処理すればより確実ですね

送り元

HTML

1<input type="text" value="aaa" id="hoge"> 2<input type="button" value="send" onclick="window.open('search.php','search','menubar=no,height=400,width=300');">

受け側

HTML

1<script> 2window.onload=function(){ 3 document.getElementById('fuga').value=opener.document.getElementById('hoge').value 4} 5</script> 6<input type="text" id="fuga">

投稿2016/11/02 09:44

編集2016/11/04 01:14
yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2016/11/02 09:48

ちなみに myWin.onload=function(){・・・} でも動くブラウザが多いようですがIEがだめだったので 上記子ウィンドウが開くのを待つ処理を書いてあります
natlpush

2016/11/02 10:26

ご回答ありがとうございます。 javascriptはコピペだけで全くわからず申し訳ないのですが、 お示しいただいたfuncitionを<head></head>のなかに<script type="text/javascript"></script>で囲み、該当部分で<input type="button" value="会員検索" onClick="javascript:send();">といたしました。 クリックしても反応せず、基本から間違っていると思うのですが、どこにどのように記入すればいいでしょうか。全く基本的な問題だと思うので、本当に申し訳ありません。もしお手間でしたら、なにを勉強すればよいかお教え願えますと幸いです。 よろしくお願いいたします。
yambejp

2016/11/02 11:42

送り元のhogeというidのデータを、受け先のfugaというidのタグに代入するように分けて書きました あとはご自身の環境にあわせてやってみてください
natlpush

2016/11/02 14:47

ありがとうございます。 子ウインドウは開くものの、値が入らないです。 何か根本的に違うのかもしれないので、試行錯誤してみたいと思います。
natlpush

2016/11/02 15:06

追加にて失礼いたします。 chromeだと値が渡せないようです。 IEだと大丈夫でした。
yambejp

2016/11/04 01:15

念の為受け側でやる方法を追記しておきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問