- - PR -
子ウィンドウにフォーカスを当て続ける方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-04-12 11:23
現在Webアプリの開発を行っております。
親ウィンドウからJavaScriptを使って子ウィンドウを開いたのですが、 子ウィンドウを閉じるまでの間、親ウィンドウにフォーカスを移さずに 子ウィンドウのテキストボックスに値を入力する必要があります。 当初子ウィンドウのbodyタグのonBlurを使って子ウィンドウからフォーカスが 外れたら強制的に子ウィンドウにフォーカスを設定する処理で実装しており ましたが、これだと子ウィンドウのテキストボックスにフォーカスを当てた 場合もテキストボックスからフォーカスが外れてしまうことが分かりました。 ShowModalDialogを使う方法も考えましたが、これだと子ウィンドウのボタン (サーバーコントロール)を押した時に親ウィンドウにもポストバックが発生 してしまうので現ロジックでは問題が出てしまいます・・ 何か良い方法がありましたら教えて頂けますでしょうか? 開発環境はWindows2000Server + VS.NET2003です。 宜しくお願いいたします。 | ||||
|
投稿日時: 2004-04-12 11:37
ブラウザですので、おそらくそういうことは無理ではないかと思います。
使ったことはありませんが、ShowModalDialogだってIE独自の特別な機能なんですよね。 親のウィンドウの全てのコントロールを使用不可にしておくというのはどうですか。 あるいはウィンドウの座標を画面の外(-10000,-10000等)に変更するとか。こうしてもタスクバーには残ってますけどね。 あれ・・・全画面表示している場合にはどうなるんだろ? | ||||
|
投稿日時: 2004-04-12 11:50
こんにちは。この↑要求を満たすもっとも手っ取り早いやり方はshowModalDialogと思いますが…。 showModalDialogで表示した子のボタンを押した時に親にPostBackが発生するという辺りがよく分かりません。そのボタンを押すと子を閉じるのでしょうか? そうであれば(親画面のサーバコントロールのonclickにshowModalDialogのコードがあると仮定して書きますが)、showModalDialogの後で__doPostBackが呼ばれている筈なので、showModalDialog呼び出し直後にreturn false;でonclickイベントを抜ければPostBackは発生しないと思います。 | ||||
|
投稿日時: 2004-04-12 22:42
上尾幽霊さんはじめまして。 同じようなケースを以下のような方法で実現しています。 ・親ウィンドウのボタン押下時にshowModalDialogで ダミー画面を開く。 ・ダミー画面のPage_Loadで、 「本当に開きたい画面」をダミー画面内IFRAMEのsrcにセット。 「本当に開きたい画面」はSessionに入れるなり、QueryStringで渡すなり。 これなら、子ウィンドウ内のボタンを押した際にも 親ウィンドウには影響しないと思います。 |
1