Ste*_*ers 9 ajax jsf primefaces
如何在Primefaces的AjaxStatus显示时添加延迟(例如300ms).现在它总是立即显示有待处理的Ajax请求.这对于"onkeyUp"事件来说很麻烦,例如当每个键击使加载对话框暂停一秒时.
这是我的AjaxStatus加载指示器组件:
<p:ajaxStatus id="startAjax" onstart="PF('start').show();" oncomplete="PF('start').hide();" >
</p:ajaxStatus>
<p:dialog widgetVar="start" showHeader="false" resizable="false">
<h:graphicImage value="#{resource['/images/loading.gif']}"></h:graphicImage>
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
Mik*_*bel 14
你需要用你的PF('start').start()包装一个函数,它会延迟调用它.此外,onComplete处理程序应检查您是否有待显示和取消它们的待处理状态.这是为了避免ajax在显示状态之前完成的情况.
代码应该是这样的(未经测试)
<p:ajaxStatus id = "startAjax" onstart = "startHandler();" oncomplete = "endHandler();"/>
<script>
var ajaxInProgress;
function startHandler() {
ajaxInProgress = setTimeout(function () {
PF('start').show();
}, 3000);
}
function endHandler() {
clearTimeout(ajaxInProgress);
PF('start').hide();
ajaxInProgress = null;
}
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |