无法打开模态对话框来打开辅助对话框
时间:2020-03-05 18:57:15 来源:igfitidea点击:
我有一个"模态对话框"表单,其中包含一些"帮助链接",该表单应在其顶部打开其他非模态面板或者对话框(同时将主对话框保持为模态)。
但是,这些总是在蒙版后面。 " YUI"似乎正在识别最高的" z-index",并将遮罩和模式对话框设置为高于该值。
如果我等待内容面板化,则可以将其设置为具有较高的z索引。到目前为止,一切都很好。然后的问题是,第二个非模式对话框中的字段是无法聚焦的。它们下方的模式对话框似乎在某种程度上阻止了焦点转移到最初的模式对话框之外的任何事物。
如果我可以使用jQuery进行这种"对话框组模态",如果YUI根本不允许这样做,那也是可以接受的。
帮助!
解决方案
回答
如果用户应该与其他元素(即模态的定义)进行交互,则原始对话框不能是模态的。原始对话框真的需要模态吗?如果是这样,是否在打开其他元素之前尝试切换原始对话框的modal属性?
回答
默认情况下,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() { };
如果这样做,实际上是在告诉YUI我们将自己管理元素的z索引。可能很好,但是在进行此操作之前需要考虑一些事项。