如何在JSF上延迟Primefaces AjaxStatus?

前端之家收集整理的这篇文章主要介绍了如何在JSF上延迟Primefaces AjaxStatus?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在Primefaces的AjaxStatus显示添加延迟(例如300ms).现在,当Ajax请求待处理时,它会立即显示.这对于“onkeyUp”事件来说很麻烦,例如当每个按键行程使加载对话框瞬间启动时.

这是我的AjaxStatus加载指示器组件:

  1. <p:ajaxStatus id="startAjax" onstart="PF('start').show();" oncomplete="PF('start').hide();" >
  2. </p:ajaxStatus>
  3.  
  4. <p:dialog widgetVar="start" showHeader="false" resizable="false">
  5. <h:graphicImage value="#{resource['/images/loading.gif']}"></h:graphicImage>
  6. </p:dialog>
你需要用一个函数来包装你的PF(‘start’).start(),它会延迟调用它.此外,onComplete处理程序应检查您是否有待显示和取消它们的待处理状态.这是为了避免ajax在显示状态之前完成的情况.

代码应该是这样的(未经测试)

  1. <p:ajaxStatus id = "startAjax" onstart = "startHandler();" oncomplete = "endHandler();"/>
  2. <script>
  3. var ajaxInProgress;
  4. function startHandler() {
  5. ajaxInProgress = setTimeout(function () {
  6. PF('start').show();
  7. },3000);
  8. }
  9. function endHandler() {
  10. clearTimeout(ajaxInProgress);
  11. PF('start').hide();
  12. ajaxInProgress = null;
  13. }
  14. </script>

猜你在找的Ajax相关文章