我要求h:form
中有p:dialog
个输入组件
我想在用户关闭p:dialog
之前显示另一个确认对话框。
我怎样才能实现这一目标?
Primefaces仅在onHide
上为我提供了onShow
和p:dialog
个事件
是否有任何名为onBeforeHide
的事件?
使用:Primeface 3.5 JSF 2.1
答案 0 :(得分:2)
回答这个可能有点迟。这是另一种在关闭时显示另一个对话框或提示的方法。
创建对话框属性closable=false
和closeOnEscape=false
并处理转义键事件,并在标题中引入自定义关闭图标。单击图像,您可以调用js方法或远程命令以显示另一个弹出窗口。
<p:dialog widgetVar="dialogWidget" id="DlgWidgetId"
resizable="false" closable="false" modal="true" closeOnEscape="false">
<f:facet name="header">
<h:outputText value=" Header Text"></h:outputText>
<img id="closeIconId" src="../../images/close_icon.png"
height="16px" width="16px" onclick="openAnotherPopup()" />
</f:facet>
<script type="text/javascript">
$(document).keyup(function(e) {
if (e.which == 27)
$("#closeIconId").click();
});
</script>
// Other contents in popup
</p:dialog>
答案 1 :(得分:1)
您可以实施自己的:
此示例适用于PrimeFaces 5(使用PF快捷方式,在您的情况下直接调用widgetVar):
<强> 的javascript 强>
$(document).ready(function() {
//first unbind the original click event
PF('dialogWV').closeIcon.unbind('click');// in PrimeFaces 3.5 replace PF('dialogWV') with dialogWV (window scope)
//register your own
PF('dialogWV').closeIcon.click(function(e) {
var r = confirm("Are you sure!");
if(r) {
PF('dialogWV').hide();
}
//should be always called
e.preventDefault();
});
})
请记住,如果您更新对话框,则必须记住...