将PrimeFaces对话框更改为客户端模态

时间:2013-02-15 09:55:03

标签: javascript primefaces dialog modal-dialog client-side

我有一个这样的primefaces对话框:

<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()不存在。 是否可以通过这种方式更改对话框而无需往返服务器?

2 个答案:

答案 0 :(得分:0)

你有这个属性(模态)现在它假设置为madal =“true”

答案 1 :(得分:0)

您是否使用Firefox与Firebug或其他一些可以显示DOM元素dlg的浏览器/ Web开发人员工具?

在那里,您可以发现dlg包含方法show()hide(),以及enableModality()disableModality()。这些(几乎)是你想要的。

不幸的是,enable...disable没有(正如人们所想的那样)设置一个选项,使对话框在显示时变为模态。相反,他们显示或隐藏“停电”div。因此,当您需要动态模式对话框时,不要通过Javascript调用dlg.show(),而是调用dlg.enableModality(); dlg.show(),反之亦然,以便隐藏。

修改

还有属性dlg.cfg,其中包含一些设置。看来,如果你只是设置dlg.cfg.modal=true(当时是否存在该设置),那么下次dlg显示时,它是模态的(但是,与在xhtml中设置它不同,它会仍然是可拖动和可调整大小的。)