モーダル ダイアログでセカンダリ ダイアログを開く際の問題
-
09-06-2019 - |
質問
私は持っています modal dialog
フォーム内にいくつかの「ヘルプ リンク」があり、その上で他の非モーダル パネルまたはダイアログを開く必要があります (メイン ダイアログはモーダルのままです)。
しかし、これらは常にマスクの後ろに隠れてしまいます。 YUI
最高のものを認識しているようです z-index
マスクとモーダルダイアログをそれよりも高く設定します。
ヘルプ コンテンツをパネル化するまで待っている場合は、より高い Z インデックスを持つように設定できます。ここまでは順調ですね。問題は、二次的な非モーダル ダイアログ内のフィールドがフォーカスできないことです。その下のモーダル ダイアログにより、初期のモーダル ダイアログ以外にフォーカスが移動することが何らかの形で妨げられているようです。
YUI が単純にこれを許可しない場合は、この「ダイアログ グループ モダリティ」を jQuery で実行できれば許容されます。
ヘルプ!
解決
デフォルトでは、YUI は YAHOO.widget.Overlay を拡張し、オーバーレイ パネルを使用するものの z-index を管理します。これは、YAHOO.widget.Overlay の「bringToTop」メソッドを通じて行われます。これをオフにするには、「bringToTop」メソッドを空の関数に変更するだけです。
YAHOO.widget.Overlay.prototype.bringToTop = function() { };
このコードはそれを永久にオフにし、これをcontainer.jsファイルの最後に置くだけで済みます。このアプローチは少し大槌的なアプローチすぎると思うので、YUI クラスを拡張し、「super.constuctor」を呼び出した後に次のように記述します。
this.bringToTop = function() { };
これを行うと、基本的に要素の Z インデックスを自分で管理することを YUI に伝えることになります。それはおそらく問題ありませんが、実行する前に考慮すべきことがあります。
他のヒント
ユーザーが他の要素と対話することが想定されている場合、元のダイアログをモーダルにすることはできません。これがモーダルの定義です。元のダイアログを実行しますか 本当に そもそもモーダルにする必要があるのでしょうか?その場合、他の要素を開く前に、元のダイアログのモーダル プロパティを切り替えてみましたか?