- ベストアンサー
サブウインドウを閉じて親ウインドウにデータを渡す方法
- サブウインドウを閉じる時にデータを親ウインドウに渡す方法について調べています。
- 親ウインドウに選択されたデータを表示するためには決定ボタンを押した後にデータを引継ぐ必要があります。
- 現在はwindow.close()でサブウインドウを閉じていますが、データの引継ぎ方法がわかりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ラジオボタンにて選択されたレコードを特定するところで詰まっております。 選択された部署コードからどうやって部署名を特定していいのかわからないということでよろしいでしょうか?(レコードという言葉はHTML上では使われませんので、もう少し具体的に書かれた方がわかりやすいです) すぐに思いつく方法としては、 ・Arrayの連想を使う(Array["部署コード"] = 部署名) ・<hidden id="部署コード" value="部署名">を埋めこんでgetElementByIdで取得する。 というところでしょうか・・・
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
Javaと無関係なのでJavaScriptの質問だと思いますが、方法論だけ・・・ A.サブウィンドウをモーダルでオープンし、returnValueを利用する。 B.サブウィンドウから親(parent)のフォームの値を直接変更する。
補足
ありがとうございます。 現状、window.showModalDialogでオープンし、returnValueで戻しております。 質問のタイトルとは少し離れますが、サブウインドウ内でデータの処理で詰まっております。 画面イメージ 親画面 ----------------------------------- ....部署コード[ ] ....部署名....[ ] [選択] ----------------------------------- <script language="JavaScript" type="text/JavaScript" /> <!-- function popup(***,***){ sub2 = window.showModalDialog("****Action.do?~", "", "~"); } //--> </script> <form> <input type="button" value="選択" onclick="popup(***,***)"> </form> 子画面 -------------------------------- 選択 + 部署コード + 部署名 -------------------------------- ....○..+.....0001.....+..人事部 ....●..+.....0002.....+..技術部 ....○..+.....0003.....+..営業部 -------------------------------- .......................[決定] -------------------------------- 子画面で技術部を選択し決定ボタンをクリックすることにより、子画面を閉じ、親画面に技術部の部署コードと部署名を戻したいのです。 <script language="JavaScript" type="text/JavaScript" /> <!-- function subWinClose2(bu_no) { <% String returnValue = request.getParameter("現在コーディング中です"); %> //window.returnValue = "33333"; window.returnValue = (現在コーディング中です); this.close(); } //--> </script> <html:form action="KetteiAction.do"> <table border=1> <tr> <th>選択</th> <th>部署コード</th> <th>部署名</th> </tr> <logic:iterate id="list" name="empList" indexId="index"> <tr> <td><html:radio idName="list" property="bu_no" value="bu_no" /></td> <td><bean:write name="list" property="bu_no" /></td> <td><bean:write name="list" property="bu_name" /></td> </tr> </logic:iterate> </table> <html:submit value="決定"/> <input type="button" value="決定して閉じる" onclick="subWinClose2(form.bu_no.value)"> </html:form> 現在、 決定ボタンよりKetteiActionを起動し、戻す方法と、 決定して閉じるボタンによりJavaScriptにて戻す方法と 模索しながら進めております。 親画面から子画面への遷移はOKです。 子画面でのDB検索もOKです。 ラジオボタンにて選択されたレコードを特定するところで詰まっております。 アドバイス頂けたら幸いです。 よろしくお願いします。
お礼
アドバイスありがとうございます。 下記のように、getElementById()で取得できるように書き直してみました。 <script language="JavaScript" type="text/JavaScript" /> <!-- function subWinClose2() //引数は無しです { i = 0; n = 0; do { i++; radioboxValue = document.getElementById("DeptTable").rows[i].cells[0].innerHTML; result = radioboxValue.match(/CHECKED/g); if (result == "CHECKED") { bu_no = document.getElementById("DeptTable").rows[i].cells[1].innerHTML; bu_name = document.getElementById("DeptTable").rows[i].cells[2].innerHTML; n = 1; } } while (n == 0); window.returnValue = bu_name ; this.close(); } //--> </script> <html:form action="KetteiAction.do"> <table border=1 id="DeptTable"> <tr> <th>選択</th> <th>部署コード</th> <th>部署名</th> </tr> <logic:iterate id="list" name="empList" indexId="index"> <tr> <td><html:radio idName="list" property="bu_no" value="bu_no" /></td> <td><bean:write name="list" property="bu_no" /></td> <td><bean:write name="list" property="bu_name" /></td> </tr> </logic:iterate> </table> <html:submit value="決定"/> <input type="button" value="決定して閉じる" onclick="subWinClose2()"> </html:form> これで親画面での戻り値に部署名が返ります。 この方法が妥当かと言われれば辛いところですが・・・ あとは親画面でのJavaScriptでどう部署コード欄、部署名欄に載せるのか?を考えていきたいと思います。 Javaから離れてきましたので、スレッドを変えて改めます。 ありがとうございます。