JavaScript:NNでModalDialogを実現するには?

[上に] [前に] [次に]
KAPPA [E-Mail] [HomePage] 2000/01/21(金) 17:53:51
JavaScriptについての質問です。

IEではModalDialogがサポートされていて、Argumentによって値のやりとりが出来るようになっているみたいですが、これと同様のことをNNで実現するためにはどうしたらよいでしょうか?

具体的にはやりたいことは、
フォームが1画面に収まりきらないので、あるCheckBoxがクリックされたらそれに関連する情報入力をダイアログなどで行い、その入力値をフォームのhidden項目などにセットし、一括送信したいのです。CheckBoxの種類も多く、項目によって追加情報の数なども変わるので、ModalDialogが使えれば文句無いのですが・・・

宜しくお願いしますm(_ _)m

かえる 2000/01/21(金) 20:31:37
ModalDialogではないのですが、こんな方法もあるかと。
NNは使用してないので動作確認はとってませんが、多分動くと思います。

<style>
#division{ display:none; height:100% }
</style>

<script>
var curDiv = 0;
function movePage( flg )
{
&nbsp;switch( flg ){
&nbsp;&nbsp;case 0:
&nbsp;&nbsp;&nbsp;if( curDiv < 1 ) break;
&nbsp;&nbsp;&nbsp;document.all("division")(curDiv).style.display = "none";
&nbsp;&nbsp;&nbsp;document.all("division")(--curDiv).style.display = "block";
&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;case 1:
&nbsp;&nbsp;&nbsp;if( curDiv >= (document.all("division").length - 1) ) break;
&nbsp;&nbsp;&nbsp;document.all("division")(curDiv).style.display = "none";
&nbsp;&nbsp;&nbsp;document.all("division")(++curDiv).style.display = "block";
&nbsp;&nbsp;&nbsp;break;
&nbsp;}
}
</script>
<form name=form1 action=xxx>

<div id=divisions style="height:90%">

<div id=division style="display:block">
<h3>division1</h3>
<input type=text name=text1><br>
<input type=text name=text2><br>
<input type=text name=text3><br>
</div>

<div id=division>
<h3>division2</h3>
<input type=radio name=radio1><br>
<input type=radio name=radio1><br>
<input type=text name=text4><br>
</div>

<div id=division>
<h3>division3</h3>
<input type=checkbox name=checkbox1><br>
<input type=checkbox name=checkbox1><br>
<input type=checkbox name=checkbox1><br>
</div>

</div>
<hr>

<input type=button value="Previous" onclick="movePage(0)">
<input type=button value="Next" onclick="movePage(1)">
<input type=reset value=reset>
<input type=submit value=submit>
</form>

こんな感じでどうですか?

かえる 2000/01/21(金) 20:38:35
スクリプトタグの空白が...

<script>
var curDiv = 0;
function movePage( flg )
{
switch( flg ){
case 0:
if( curDiv < 1 ) break;
document.all("division")(curDiv).style.display = "none";
document.all("division")(--curDiv).style.display = "block";
break;
case 1:
if( curDiv >= (document.all("division").length - 1) ) break;
document.all("division")(curDiv).style.display = "none";
document.all("division")(++curDiv).style.display = "block";
break;
}
}
</script>

shin' 2000/01/22(土) 00:47:57
モーダルダイアログというか、
新しくwindows.openすればいいのでは?
可能な限りツールバーとか消せば限りなく
ダイアログには近くなる…と思う。

KAPPA 2000/01/23(日) 11:48:39
かえるさん、shin'さん、有り難うございます。
お二人のご意見、大変参考になりましたので、
取り敢えずの解決策として、window.open()で開いて、
必要な入力箇所だけを表示させようと考えてます。
今までは、小さめのウィンドーをその都度開こうと思ってました。

>かえるさん
 このこーど、NNではNGです。document.allが使えないようです。

>shin'さん
 見た目でダイアログが欲しかったのではなく、
 そのウィンドウ以外でのマウスイベントを制限したかったのです。
 この辺では何か解決策はありますか?

shin' 2000/01/23(日) 23:31:57
> この辺では何か解決策はありますか?

実際にコーディングするときは大変かもしれないけど、
windowオブジェクトにonBlurというイベントがあるので、
しらべてみてください。

KAPPA 2000/01/24(月) 03:02:57
[[解決]]
>windowオブジェクトにonBlurというイベントがあるので、
>しらべてみてください。

色々試してみます。
有り難うございました。

[上に] [前に] [次に]