あるWeb画面よりサブウインドウを開いてデータを選択、選択したら閉じて親ウインドウにデータを渡したいと思っております。
サブウインドウを閉じた時の親ウインドウへのデータの引継ぎ方法がよくわかりません。
●前提
・親ウインドウに選択ボタンがついている。
・選択ボタン押下したらキーを渡し、サブウインドウを起動しキーを渡す。
・window.open()でActionクラスを呼ぶ。
・ActionクラスがForm,State,DAO等よりデータを取得。
・"sucsess"にてサブウインドウを開く。→Struts使ってます。
・サブウインドウにはDBより検索された一覧が表示されている。
・選択できるようにラジオボタンも付いている。
・決定ボタンがついている。
(作業中)
・親ウインドウに選択されたデータが表示されている。
この作業中のところでご質問です。
決定ボタンを押下したあと、データの引継ぎ方法がよくわかりません。
今はとりあえずwindow.close()で閉じるだけにしております。
稚拙な説明ですみません。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>ラジオボタンにて選択されたレコードを特定するところで詰まっております。
選択された部署コードからどうやって部署名を特定していいのかわからないということでよろしいでしょうか?(レコードという言葉はHTML上では使われませんので、もう少し具体的に書かれた方がわかりやすいです)
すぐに思いつく方法としては、
・Arrayの連想を使う(Array["部署コード"] = 部署名)
・<hidden id="部署コード" value="部署名">を埋めこんでgetElementByIdで取得する。
というところでしょうか・・・
アドバイスありがとうございます。
下記のように、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から離れてきましたので、スレッドを変えて改めます。
ありがとうございます。
No.1
- 回答日時:
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です。
ラジオボタンにて選択されたレコードを特定するところで詰まっております。
アドバイス頂けたら幸いです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 10 ファイルエクスプローラーでフォルダを閉じる操作について 2 2022/10/15 11:06
- Chrome(クローム) 最近Win10にてブラウザが左にスッと隠れていく現象に悩まされてます 3 2023/07/22 23:11
- エッセイ・随筆 尋常小学校唱歌『さくら さくら』の解釈について以下のものは成立しますか?普通じゃおもろない? 7 2023/02/26 16:52
- その他(OS) Mac OSの操作について 2 2022/06/08 09:19
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- Chrome(クローム) Fireshotやショーットカットキーでキャプチャした画面をGoogleドライブに保存する方法 2 2022/10/25 12:40
- Chrome(クローム) Google Chromeのブラウザ(PC)ウインドウの移動について 3 2022/07/19 15:14
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Illustrator(イラストレーター) ウインドウの固定 1 2022/05/02 17:11
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPでメッセージボックスを表示...
-
CheckBoxをボタン形式にして押...
-
JSPでボタンを押したら、文字が...
-
グリッドビューでのチェックボ...
-
Ctrlキーを押しながらのダブル...
-
Fancyboxのiframe内に閉じるボタン
-
VBAで一時中断したプログラムの...
-
c# 文字列の最後から1文字削除...
-
表示ボタン押下すると、テキス...
-
「alt+←」を無効にする方法は?
-
MFC ボタンのEnableについて
-
複数のSubmitボタンをname属性...
-
ASP.NETのGridViewでNULLの場合...
-
VB.NETでボタンクリックイベン...
-
ACCESS リストボックスに検索結...
-
IEの閉じるボタンを消す方法
-
DataGridViewのチェックボック...
-
document.titleでブラウザに表...
-
Excel:「フォーム」のボタンで...
-
javascript 別ウィンドウを開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c# 文字列の最後から1文字削除...
-
DataGridViewのチェックボック...
-
VBAで一時中断したプログラムの...
-
グリッドビューでのチェックボ...
-
SPREADでカーソルの位置を1行目...
-
JSPでボタンを押したら、文字が...
-
ブラウザの×ボタン(閉じるボタ...
-
JSPでメッセージボックスを表示...
-
Eclipseでクリーンが出来ない
-
最大化ボタンと最小化ボタンを...
-
Ctrlキーを押しながらのダブル...
-
メール添付されたPDFファイルが...
-
EXCEL2010でセルが編集中かを判...
-
今更、VBAでRPA、キーボード操...
-
CheckBoxをボタン形式にして押...
-
Fancyboxのiframe内に閉じるボタン
-
asp.net メッセージボックス表...
-
エクセルにカウンターを設置したい
-
javascript 別ウィンドウを開...
-
Excel:「フォーム」のボタンで...
おすすめ情報