我正在使用 4-5 个 primefaces 对话框。当单击 ESC 我想关闭所有打开的对话框。
问问题
3729 次
2 回答
4
hide()
通过指定的客户端对象调用对话框的函数widgetVar
。所以如果你定义了你的p:dialog
喜欢:
<p:dialog widgetVar="dialog1" header="Dialog 1"/>
<p:dialog widgetVar="dialog2" header="Dialog 2"/>
您的 ESC 按钮应如下所示:
<p:commandButton value="ESC" onclick="dialog1.hide();dialog2.hide()"/>
您还可以创建一个可重用p:remoteCommand
的来关闭所有对话框并在您的p:commandButton
或其中使用它p:hotkey
- 如果通过“单击 ESCAPE”您的意思是点击 Escape 按钮:
<p:remoteCommand name="closeAll" onsuccess="dialog1.hide();dialog2.hide()"/>
然后在您的组件中引用closeAll()
命令:
<p:hotkey bind="esc" handler="closeAll()"/>
<p:commandButton value="ESC" onclick="closeAll()"/>
于 2012-10-26T07:14:36.660 回答
4
虽然帖子很旧,但答案是一个静态解决方案,这是一个使用 jQuery 的动态解决方案。
function escDialog() {
$(document).keyup(function(e) {
if (e.keyCode == 27) { // esc code is 27
closeAllDialog() ;
}
});
}
function closeAllDialog() {
for (var propertyName in PrimeFaces.widgets) {
if (PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.Dialog ||
PrimeFaces.widgets[propertyName] instanceof PrimeFaces.widget.LightBox) {
PrimeFaces.widgets[propertyName].hide();
}
}
}
然后在你的 document.ready 你会打电话escDialog()
希望这可以帮助。
于 2014-06-04T08:02:02.070 回答