我有一个素数面对话框,如下所示:
<p:dialog widgetVar="dlg" width="320" height="220" modal="false" closable="false" showHeader="false" resizable="false" position="right,top">
如果我点击页面中的某个元素,我想将此对话框更改为模态对话框。是否有用于此的客户端API?
尝试
onclick="dlg.setModal(true);"
没有成功。方法setModal()不存在。是否可以在不往返服务器的情况下以这种方式更改对话框?
您有这个(模态)的属性,现在它为false,设置它为madal="true"
您是否将Firefox与Firebug一起使用,或者使用其他可以向您显示DOM元素dlg
的浏览器/web开发工具?
在那里你可以发现dlg
有方法show()
和hide()
,以及enableModality()
和disableModality()
。这些(几乎)是你想要的。
不幸的是,enable...
和disable
没有(正如人们可能认为的那样)设置一个选项,使对话框在显示时成为模态对话框。相反,它们显示或隐藏"blackout"div。因此,当您想要动态模式对话框时,不要通过Javascript调用dlg.show()
,而是调用dlg.enableModality(); dlg.show()
,反之亦然。
编辑:
还有属性dlg.cfg
,它包含一些设置。看起来,如果您简单地设置dlg.cfg.modal=true
(无论该设置当时是否存在),那么下次显示dlg
时,它是模态的(但是,与在xhtml中设置它不同,它仍然是可拖动和可调整大小的)。