Question

I am using blockUI when loading pages with AJAX, as shown below:

function blockPage() {
    $.blockUI({ 
        message: 'Loading ...',
    }); 
}

What I would like to do is to animate the "dots" in the message. Something like:

var intVar = setInterval(function() {
    i = ++i % 5;
    $("#message").html("Loading "+Array(i+1).join("."));
}, 300);

Any pointers as to how i could do this would be greatly appreciated.

Was it helpful?

Solution

According the the BlockUI documentation, you can set a particular DOM element to be displayed.

For an example, I have created a JSBin.

What you do, is put the message in your document that you will display so you can reference it later.

<div id="message" style="display:none;"> 
    <h1>Loading</h1> 
</div> 

and then invoke it:

$(document).ready(function() { 
    $('#pageDemo4').click(function() { 
        $.blockUI({ message: $('#message') });
        startAnimation();                
    }); 
});

You will then also need to define your start animation and stop the animation functions.

var intervalId;
function startAnimation() {
   var i = 0;
   intervalId = setInterval(function() {
      i = ++i % 5;
      $("#message").html("Loading "+Array(i+1).join("."));
   }, 300);
}

function stopAnimation() {
  $.unblockUI();
  clearInterval(intervalId);
}

Call the stopAnimation when your AJAX request completes.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top