搜索隐藏notificationBar的解决方案后,没有按钮oncomplete XX.hide()
我找到了一个javascript
<script type="text/javascript">
jQuery(function() {
bar.show();
setTimeout("bar.hide()",5000);
});
</script>
当我在</p:notificationBar>
但我的问题是我想在执行我的方法后显示通知,并在5秒后隐藏此组件。
但是我不知道我在oncomplete
上调用这个javascrpit所以我复制了两行这是我的代码
<p:commandButton value="Run" action="#{optionBean.updateParametre()}" oncomplete="bar.show(),setTimeout(bar.hide(),50000);" update="panel"/>
<p:notificationBar position="bottom" effect="fade" widgetVar="bar" >
<f:facet name="close">
<p:graphicImage value="/resources/image/closebar.png" />
</f:facet>
<h:outputText value="Parametre Enregistre !" style="color:#FFCC00;font-size:36px;" />
</p:notificationBar>
问题是notifationBar在固定时间内快速消失!!!为什么
答案 0 :(得分:2)
你可以试试这个:
jQuery(function() {
bar.show();
setTimeout(function(){ bar.hide(); },5000);
});
你可以实现的另一种方法是添加缓慢淡出的切换,我认为5s是查看通知的慢速时间。
答案 1 :(得分:2)
试试这个
jQuery(function(){
bar.show().delay(5000).hide();
});
答案 2 :(得分:2)
你调用setTimeout的方式有一个细微的差别,这会产生重大影响。
比较
setTimeout("bar.hide()",5000);
setTimeout(bar.hide(),50000)
除了数量级差异之外,bar.hide()
引用在顶部,不引用在底部。当你pass string literals to setTimeout时,超时发生时它们是eval
。
在第二个实例中,bar.hide()
未加引号。发生的事情是在创建超时时立即调用bar.hide()
,并在超时发生时调用hide
函数的返回值。
解决此问题的最简单方法是将oncomplete属性修改为
oncomplete="bar.show(),setTimeout('bar.hide()',50000);"
有一种更好的方法。 jQuery可以使用delay
链接这样的效果,但其他人已经给出了答案,所以我不会在这里重复。