Click here to Skip to main content
15,879,239 members
Articles / Web Development / XHTML

Displaying a Progress Bar (Loading Box) During any Task or Work in Progress using JQuery and CSS

Rate me:
Please Sign up or sign in to vote.
4.29/5 (19 votes)
17 Mar 2009CPOL2 min read 125.8K   4.4K   65   37
How to display a progress bar (loading box) during any task or work is running in the back end using JQuery and CSS.

Introduction

This article explains how to display a progress bar (loading box) during any task or work that is running in the backend (background process) using JQuery and CSS.

Sometimes we have long processes in our web pages like photo uploading, message sending, attachment uploading etc. During these types of lengthy processes, it is nice to display some window showing current status like "Sending...", "Loading...", "Deleting..." etc. as in the following screen:

load1.JPG

Using the Code

Let's see how to do it. The following function will create two overlays to display the progress bar.

Arguments

  • progTit: Title of the progress window.
  • progText: Text content of the progress window like "Sending...", "Loading...", "Deleting...".
  • progImg: Path of the image that will be shown in the box.
JavaScript
$.showprogress = function(progTit, progText, progImg)
{
    $.hideprogress();
    $("BODY").append('<div id="processing_overlay"></div>');
    $("BODY").append(
      '<div id="processing_container">' +
        '<h1 id="processing_title">' + progTit + '</h1>' +
        '<div id="processing_content">' +
          '<div id="processing_message">'+ progText + 
                      '<br/><br/>' + progImg + '</div>' +
        '</div>' +
      '</div>');
     
    var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 
               'absolute' : 'fixed'; 
    
    $("#processing_container").css({
        position: pos,
        zIndex: 99999,
        padding: 0,
        margin: 0
    });
        
    $("#processing_container").css({
        minWidth: $("#processing_container").outerWidth(),
        maxWidth: $("#processing_container").outerWidth()
    });
      
    var top = (($(window).height() / 2) - 
      ($("#processing_container").outerHeight() / 2)) + (-75);
    var left = (($(window).width() / 2) - 
      ($("#processing_container").outerWidth() / 2)) + 0;
    if( top < 0 ) top = 0;
    if( left < 0 ) left = 0;
    
    // IE6 fix
    if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = 
        top + $(window).scrollTop();
    
    $("#processing_container").css({
        top: top + 'px',
        left: left + 'px'
    });
    $("#processing_overlay").height( $(document).height() );
}

And to hide the progress box, I added another function as follows:

JavaScript
$.hideprogress = function()
{
    $("#processing_container").remove();
    $("#processing_overlay").remove();
}

Let's take an example of a simple message board system, to make this more clear.

In a message system, you have different sections like Inbox, Sent, Draft etc., and when we go to these sections by clicking links, it will take some time to display the clicked section's content. In this time, we can display a box containing text like 'Loading Inbox' with the title 'Inbox'. See the following code:

JavaScript
function fillinbox(){
     $.showprogress('Inbox','Loading.....','<img src="Images/loadingimage.gif"/>');
         $.post("controller/messagecontroller.aspx",{action:'inbox',page:'1'},
         function(ret){
          $("#divResult").html(ret);
         } 
       );
       $.hideprogress();
}

In the above example, the inbox content is loaded from the another page, and it will take some time to get that content. In between this time duration, the progress bar is displayed saying 'Loading...'.

Steps

  1. Add the jquery.js file in your page from the attached folder.
  2. Add msgwindow.js file in your page from the attached folder.
  3. Add the CSS file in your page from the attached folder.
  4. Copy the image from the 'Image' folder from the attached folder.

Note

  • You can add a separate function in your page, or you can create a new JS file and put this function in it.
  • If you are going to add a JQuery JS file from the downloaded code, please remove the old JQuery JS file from your page if you already have one; otherwise, it will not work properly.

Points of Interest

Previously, I did not know that we could add our own functions into a JQuery file. I am surprised the function I added is working well. You can add your own functions / code in to any JQuery file.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Technical Lead IndiaNIC Infotech Ltd.
India India
• 3.6 years of experience in IT industry
• 3.6 years of Experience in Web technologies including ASP.net.
• Hands-on experience in Technologies including DotNet 2003/2005 (C# & VB.net) – MVC Framework, MS SQL server 2003/2005/2008, java script, jQuery, Ajax, CSS, SVN, VSS.
• Hands on experience on working in N-Tire Architecture.
• Experience in HTML, DHTML, XML, CSS.
• A quick learner and good management, analytical and database designing skill.
• Experience in Application Servers including IIS 5.0/6.0/7.0

Comments and Discussions

 
QuestionProgress bar works partially Pin
Member 1496854918-Oct-20 10:35
Member 1496854918-Oct-20 10:35 
QuestionNice article but bad presentation Pin
Madhan Mohan Reddy P4-May-16 23:26
professionalMadhan Mohan Reddy P4-May-16 23:26 
QuestionPls help me to do it Pin
Member 1102118914-May-15 20:14
Member 1102118914-May-15 20:14 
QuestionWhere do i add these js and css file? Pin
Member 1102118914-May-15 4:35
Member 1102118914-May-15 4:35 
QuestionAdd HTML file with plugin. Pin
Member 1102352719-Aug-14 21:16
Member 1102352719-Aug-14 21:16 
QuestionNot showing progress bar Pin
Member 1028672112-Jan-14 20:12
Member 1028672112-Jan-14 20:12 
QuestionReally well done! Pin
Massimo Aniti11-Jul-13 23:48
Massimo Aniti11-Jul-13 23:48 
Questionhow to use this i Pin
forumsharry29-May-13 20:57
forumsharry29-May-13 20:57 
GeneralMy vote of 5 Pin
Arnold198014-Apr-11 4:37
Arnold198014-Apr-11 4:37 
GeneralRe: My vote of 5 Pin
Member 1102118914-May-15 21:35
Member 1102118914-May-15 21:35 
GeneralHaving trouble implementing this into the html page Pin
tasan1321-Feb-11 2:11
tasan1321-Feb-11 2:11 
Generalwell done Pin
jquery1_43-May-10 6:09
jquery1_43-May-10 6:09 
GeneralNice! Pin
Sandeep Mewara25-Mar-10 8:15
mveSandeep Mewara25-Mar-10 8:15 
GeneralI did not understand how you handle the duration of showing the box Pin
Ersan Ercek11-Sep-09 1:04
Ersan Ercek11-Sep-09 1:04 
GeneralMy vote of 1 Pin
artmark2-Apr-09 21:41
artmark2-Apr-09 21:41 
GeneralRe: My vote of 1 Pin
Prakash Hirani5-Apr-09 21:50
Prakash Hirani5-Apr-09 21:50 
GeneralRe: My vote of 1 Pin
shaikhsamir6-Apr-10 1:26
shaikhsamir6-Apr-10 1:26 
QuestionHow can i use it ????? Pin
TitanKB19-Mar-09 17:47
TitanKB19-Mar-09 17:47 
QuestionHow can i use it ????? Pin
TitanKB19-Mar-09 16:51
TitanKB19-Mar-09 16:51 
AnswerRe: How can i use it ????? Pin
Prakash Hirani19-Mar-09 23:30
Prakash Hirani19-Mar-09 23:30 
GeneralRe: How can i use it ????? Pin
guessing-game15-May-09 6:33
guessing-game15-May-09 6:33 
GeneralUser Control Pin
isoint17-Mar-09 11:39
isoint17-Mar-09 11:39 
GeneralRe: User Control Pin
Prakash Hirani18-Mar-09 18:05
Prakash Hirani18-Mar-09 18:05 
GeneralRe: User Control Pin
isoint19-Mar-09 7:09
isoint19-Mar-09 7:09 
GeneralRe: User Control Pin
Prakash Hirani19-Mar-09 23:22
Prakash Hirani19-Mar-09 23:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.