![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在メンテナンスを担当しているWebアプリが
モーダルダイアログウィンドウ(showModalDialog)を多用しています。
このシステムは画面は jsp と javascript で、後ろはJavaです。
特に、伝票の入力処理では各行の商品IDを入力するときにモーダルダイアログウィンドウ
が開いて商品一覧が表示され、その中から商品を選択すると親画面に戻って商品情報が
表示される、という仕組みになっています。
親画面自体は開かれたままなので、画面遷移の考慮をしないで済む、という点では
シンプルなプログラムになっています。
ところがこの「showModalDialog()」、ブラウザによって若干挙動が異なったり、
将来廃止されるらしい、とのことで改造を迫られています。
モーダルダイアログウィンドウを使わない設計がいいとは思うんですが、
どのような仕組みに変えた方がよいでしょうか。
例えば画面遷移で商品を選択して戻るような仕組みにすると、途中まで入力した伝票情報を
すべて保持したまま遷移しなければなりません。
どのような仕組みがよいかご意見をお願いします。
No.3ベストアンサー
- 回答日時:
以下サンプルとして超雑にかいておきます。
あくまでフローをみるサンプルなのではしょっているので
そのままでは実用には耐えないと思います
(たぶんjQueryあたりを使えばもう少しらくにいけるとおもいます)
<html>
<head>
<script>
function test(){
var list={"":"選んでね!","x":"x","y":"y","z":"z"};
var nWin=document.createElement("div");
nWin.id="nWin";
var n=document.createTextNode("test");
nWin.appendChild(n);
var s=document.createElement("select");
for(var i in list){
var o=document.createElement("option");
o.setAttribute("value",i);
o.appendChild(document.createTextNode(list[i]));
s.appendChild(o);
}
s.onchange=function(){
document.getElementById("hoge").value=this.value;
nWin.parentNode.removeChild(nWin);
};
nWin.appendChild(s);
document.getElementsByTagName("body")[0].appendChild(nWin);
}
</script>
<style>
#nWin{
height:300px;
width:300px;
background-Color:red;
z-index:2;
position:absolute;
top:100px;
left:100px;
}
.testarea{
width:100%;
height:100px;
}
.yellow{background-Color:yellow;}
.lime{background-Color:lime;}
.aqua{background-Color:aqua;}
</style>
</head>
<body>
<div class="testarea yellow">test</div>
<div class="testarea lime">
<input type="text" name="hoge" id="hoge">
<input type="button" value="test" onclick="test()">
</div><div class="testarea aqua">test</div>
</body>
nWinをwindow.openで処理しても同じような感じになると思います
お礼が遅くなって申し訳ありません。
チャチャッとプログラムを作ってしまうなんてスゴイですね。
開いたウィンドウの中にAjaxを仕込めばDBからデータを
もってこれそうですね。
具体的に例示して頂き、本当にありがとうござました。
No.4
- 回答日時:
一般的にはモーダルウィンドウは自作すると思いますよ。
まったく難しくないですし。
単に要素をウィンドウ風にデザインして、その要素を表示・非表示にするだけです。
そのjavascriptが分からないと言われてしまうと、回答のしようがありません。。
お礼が遅くなり、申し訳ありません。
jQueryのライブライかなんかを参考にしながら、
いろいろやってみようと思います。
貴重なアドバイスありがとうございました。
No.2
- 回答日時:
そうですね、モーダルは挙動が怪しいのでクライアントの環境を限定しないと
さいあく入力ができなくなる可能性もあります
今風にかくならやはりajaxで入力枠を非同期にもってくることですね
あとは月並みですが別windowをopenするのが常套でしょう
(場合によって裏に入ってしまう可能性はしかたないとして)
社内向けの処理なら割り切ってフレーム処理でお茶を濁すこともできます
(環境さえ許せばこれが一番確実)
早速の回答ありがとうございます。
私は、伝票画面の下の方に、Ajax検索した商品一覧を貼り付けようかと
考えたんですが、ダサすぎますし、すごく長い画面になって使いにくそうです。
フレーム処理は・・・
好き嫌いの問題で恐縮ですが、ちょっと考えにくいです。
「別windowをopenする」は「target="_blank"」ですね。
確かにこれが普通でしょうか?
選択画面である商品一覧画面の方を大きくしないといけない、ということですね。
というかタブブラウザならいいわけですね。
「ajaxで入力枠を非同期にもってくる」が初級者の私にはちょっと
理解できませんでした。
現在も結構Ajaxは使っていて、多少なじみはあるんですが、もう少し詳しく
教えて頂けないでしょうか。
よろしくお願いします。
No.1
- 回答日時:
こんなのはどお?
今までの仕様
・ボタンをクリックすると、モーダルダイアログが出て、そのうえでいろいろ操作する
これからの仕様
・ボタンをクリックすると、既存の画面の上に画面をdisplayする
うーん、わかりにくいかも
lightboxを画像の代わりにHTMLを表示する感じ?
これで伝わるかしら?
この回答への補足
失礼しました。ゴメンナサイ。
lightboxそのものを使うんではないのですね。
早トチリでした。
初級者なので、
「既存の画面の上に画面をdisplayする」の意味が理解できませんでした。
もう少しご説明お願いします。
さっそくの回答ありがとうございました。
lightboxですか。
カッコよさそうですね。
業務用で全般にダサい作りとなっている(デザインも含めて)ここだけ
カッコよくなるのも面白いですね。
lightboxを使ったことがないんでゼンゼンわからないんですが、
開いたLightboxから returnValue のような感じで、メイン画面に
値を渡すことができるんでしょうか?
そして渡した後Lightboxを閉じることもできるんでしょうか?
もう少し詳しく教えて頂けるとウレシイです。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) c言語の問題です。これを踏まえてコーディングしたいのでおしえていただきたいです。 3 2023/08/03 09:27
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- Java Javaプログラミングの質問になります。 ボタンを押下した時に画面遷移して 画面から戻ってきた時のi 1 2023/06/26 07:50
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- ニコニコ生放送 WindowsPC用有料動画キャプチャーソフトで高音質録画できる商品と同DVDライティング商品は? 3 2023/03/09 17:56
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
window.Openをモーダルにできますか?
JavaScript
-
window.open()使用サブウィンドウをモーダルにする方法
Java
-
子ウィンドウを常に手前表示、親ウィンドウは操作させない
JavaScript
-
-
4
[Java] Edgeでのアドレスバー非表示について
JavaScript
-
5
window.open(about:blank")"
JavaScript
-
6
IEからEdgeへの移行に伴うIMEの状態(ime-mode)
HTML・CSS
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<a>タグのテキストを取得
-
HTML:Tableタグに対し、JavaScr...
-
重複しないくじの作り方がわか...
-
onchangeイベントを使ってspan...
-
ジャンル別にランダム画像を表...
-
Enterで次の入力項目へ進むには?
-
オブジェクトがありません
-
javascript 特定のタグのidの存...
-
javascript/他ページ内リンク...
-
IE8でdivのcontenteditable=tru...
-
javascriptであるボタンを押す...
-
Click回数を数え、規定された回...
-
文字を点滅させるスクリプト ...
-
JavaScriptのメモ帳アプリ編集...
-
ActiveXobjectが作成できない
-
javascriptで自動計算フォーム...
-
関数でy=g(x)のgとは何の略です...
-
C#テキストボックスの文字を配...
-
google apps scriptの終了のさせ方
-
なぜmatchメソッドがエラーにな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<a>タグのテキストを取得
-
ActiveXobjectが作成できない
-
innerHTML実行後のイベント
-
任意の座標をクリックさせるには
-
javascript 特定のタグのidの存...
-
onchangeイベントを使ってspan...
-
HTML:Tableタグに対し、JavaScr...
-
モーダルダイアログウィンドウ...
-
日本語入力の禁止
-
javascriptでCSVを呼出しvlookup
-
Click回数を数え、規定された回...
-
画像上のクリックした場所が分...
-
【Tabキー】特定の範囲内だけで...
-
配列の大括弧と丸括弧はどう違う?
-
重複しないくじの作り方がわか...
-
javascriptで、表示されている...
-
div要素内の全input要素をdisable
-
javascriptであるボタンを押す...
-
javascriptで自動計算フォーム...
-
RadioButtonListの表示制御
おすすめ情報