Java 在primefaces中单击ESC(ESC)时关闭所有对话框
我正在使用4-5个primefaces对话框。单击ESC时,我希望关闭所有打开的对话框。通过使用Java 在primefaces中单击ESC(ESC)时关闭所有对话框,java,jsf,primefaces,Java,Jsf,Primefaces,我正在使用4-5个primefaces对话框。单击ESC时,我希望关闭所有打开的对话框。通过使用widgetVar指定的客户端对象调用对话框的hide()函数。因此,如果您将p:dialog定义为: <p:dialog widgetVar="dialog1" header="Dialog 1"/> <p:dialog widgetVar="dialog2" header="Dialog 2"/> 然后在您的组件中参考closeAll()命令: <p:hotkey
widgetVar
指定的客户端对象调用对话框的hide()
函数。因此,如果您将p:dialog
定义为:
<p:dialog widgetVar="dialog1" header="Dialog 1"/>
<p:dialog widgetVar="dialog2" header="Dialog 2"/>
然后在您的组件中参考closeAll()
命令:
<p:hotkey bind="esc" handler="closeAll()"/>
<p:commandButton value="ESC" onclick="closeAll()"/>
虽然这篇文章很旧,但答案是一个静态解决方案,下面是一个使用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()
希望这有帮助 这个标题和描述很有意义,因为您明确地指定了操作(单击),但我必须承认这完全令人困惑。
<p:hotkey bind="esc" handler="closeAll()"/>
<p:commandButton value="ESC" onclick="closeAll()"/>
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();
}
}
}