私は 4 ~ 5 個のプライムフェイス ダイアログボックスを使用しています。ESCをクリックすると、開いているすべてのダイアログボックスを閉じます。
3729 次
2 に答える
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 に答える
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 に答える