コードマスタなどの値をポップアップ画面で検索してセットということを
今まで携わったWebシステムではよくやっていた。
JavaScriptだけでサンプルが作れたのでメモ。
window.open で子画面を開き、window.opener で親画面にセットする流れ。
ついでに close して子画面も閉じる。
======================================================================
parent.html(親画面)
<html>
<head>
<title></title>
<script type="text/javascript">
function windowOpen(controlName) {
window.open("child.html?controlid=" + controlName,"new");
}
</script>
</head>
<body>
子画面から選択した値を入れる
<input type="button" value="open" onclick="windowOpen('txtParent');">
<input type="text" id="txtParent">
</body>
</html>
======================================================================
======================================================================
child.html(子画面)
<html>
<head>
<title></title>
<script type="text/JavaScript">
function setParentValue(){
var controlId = getQuerystring("controlid");
window.opener.document.getElementById(controlId).value = document.getElementById("txtValue").value;
self.close();
}
function getQuerystring(key) {
var keyName = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regex = new RegExp("[\\?&]" + keyName + "=([^&#]*)");
var qs = regex.exec(window.location.href);
if(qs == null) {
return "";
} else {
return qs[1];
}
}
</script>
</head>
<body>
<input type="text" id="txtValue">
<input type="button" value="親画面に反映" onclick="setParentValue();">
</body>
</html>
======================================================================
Getで親画面のセット先のコントロールIDを渡すようにしているけど、
PHPとか.Net使うならセッションで管理するのがいいと思う。
上の例だとクエリストリングの取得サンプルも書けた。
JavaScriptでのクエリストリングの取り方
0 件のコメント:
コメントを投稿