Jquery BlockUI Plugin (v2
Jquery BlockUI Plugin (v2
Updates posted
Overview on twitter
This documentation is for the 2.X versions of the plugin. If you need documentation for the
old 1.X versions, you can find it here. This version of BlockUI requires jQuery v1.2.3 or
later!
The jQuery BlockUI Plugin lets you simulate synchronous behavior when using AJAX, without locking the
browser[1]. When activated, it will prevent user activity with the page (or part of the page) until it is deactivated.
BlockUI adds elements to the DOM to give it both the appearance and behavior of blocking user interaction.
If you want to use the default settings and have the UI blocked for all ajax requests, it's as easy as this:
$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
[1] Using the XMLHttpRequest object in synchronous mode causes the entire browser to lock until the remote
call completes. This is usually not a desirable behavior.
function test() {
$.ajax({ url: 'wait.php', cache: false });
}
$(document).ready(function() {
$('#pageDemo1').click(function() {
$.blockUI();
test();
});
$('#pageDemo2').click(function() {
$.blockUI({ message: '<h1><img src="busy.gif" /> Just a moment...</h1>' });
test();
www.malsup.com/jquery/block/#demos 1/7
11/10/2010 jQuery BlockUI Plugin (v2)
</script>
...
Option 1 lorem ipsum dolor sit amet consectetuer adipiscing elit sed lorem leo lorem
leo consectetuer adipiscing elit sed lorem leo rhoncus sit amet Option 1 lorem ipsum
dolor sit amet consectetuer adipiscing elit sed lorem leo Test link - click me! lorem leo
consectetuer adipiscing elit sed lorem leo rhoncus sit amet
test textarea
$('#blockButton').click(function() {
$('div.test').block({ message: null });
});
$('#blockButton2').click(function() {
$('div.test').block({
message: '<h1>Processing</h1>',
css: { border: '3px solid #a00' }
});
});
$('#unblockButton').click(function() {
$('div.test').unblock();
});
$('a.test').click(function() {
alert('link clicked');
return false;
});
});
</script>
Show Dialog
$('#test').click(function() {
$.blockUI({ message: $('#question'), css: { width: '275px' } });
});
$('#yes').click(function() {
// update the block message
$.blockUI({ message: "<h1>Remote call in progress...</h1>" });
www.malsup.com/jquery/block/#demos 2/7
11/10/2010 jQuery BlockUI Plugin (v2)
$.unblockUI();
return false;
});
});
</script>
...
...
For full-featured modal dialog support, check out the jqModal Plugin by Brice Burgess.
Demos
Most of the demos below will display for 2 seconds
setTimeout($.unblockUI, 2000);
});
});
setTimeout($.unblockUI, 2000);
});
});
Run Blue
$(document).ready(function() {
Overlay $('#demo3').click(function() {
$.blockUI({ overlayCSS: { backgroundColor: '#00f' } });
setTimeout($.unblockUI, 2000);
});
});
setTimeout($.unblockUI, 2000);
});
});
www.malsup.com/jquery/block/#demos 3/7
11/10/2010 jQuery BlockUI Plugin (v2)
Run Non-
$(document).ready(function() {
centered $('#demo6').click(function() {
message $.blockUI({
centerY: 0,
css: { top: '10px', left: '', right: '10px' }
});
setTimeout($.unblockUI, 2000);
});
});
Run Blocking
$(document).ready(function() {
without a $('#demo7').click(function() {
message $.blockUI({ message: null });
(pass null as
setTimeout($.unblockUI, 2000);
message)
});
});
Run onUnblock
$(document).ready(function() {
callback $('#demo8').click(function() {
(useful when $.blockUI();
using
setTimeout(function() {
fadeOut
$.unblockUI({
option onUnblock: function(){ alert('onUnblock'); }
as it is });
invoked }, 2000);
});
when all
});
the blocking
elements
have been
removed)
Run Click
$(document).ready(function() {
overlay to $('#demo9').click(function() {
unblock $.blockUI();
(This demo $('.blockOverlay').attr('title','Click to unblock').click($.unblockUI);
});
will not
});
automatically
unblock, you
must click
the overlay.)
Run Auto-
$(document).ready(function() {
Unblock $('#demo10').click(function() {
Sets a timer $.blockUI({
to unblock message: '<h1>Auto-Unblock!</h1>',
timeout: 2000
after a
});
specified });
timeout. });
www.malsup.com/jquery/block/#demos 4/7
11/10/2010 jQuery BlockUI Plugin (v2)
$.growlUI('Growl Notification', 'Have a nice day!');
});
});
The two growl examples above also make use of the following external CSS:
div.growlUI { background: url(check48.png) no-repeat 10px 10px }
div.growlUI h1, div.growlUI h2 {
color: white; padding: 5px 5px 5px 75px; text-align: left
}
Note: For a more full-featured "growl" implementation, check out the excellent jGrowl plugin by Stan
Lemon.
Run jQuery UI
$(document).ready(function() {
Theme $('#demo13').click(function() {
Use jQuery $.blockUI({
UI themes to theme: true,
title: 'This is your title',
style the
message: '<p>This is your message.</p>',
messaege timeout: 2000
});
});
});
Run onBlock
$(document).ready(function() {
callback $('#demo14').click(function() {
$.blockUI({
fadeIn: 1000,
timeout: 2000,
onBlock: function() {
alert('Page is now blocked; fadeIn complete');
}
});
});
});
Options
BlockUI's default options look (exactly) like this:
// override these in your code to change the default behavior and style
$.blockUI.defaults = {
// message displayed when blocking (use null for no message)
message: '<h1>Please wait...</h1>',
www.malsup.com/jquery/block/#demos 5/7
11/10/2010 jQuery BlockUI Plugin (v2)
// (hat tip to Jorge H. N. de Vasconcelos)
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank',
// allow body element to be stetched in ie6; this makes blocking look better
// on "short" pages. disable if you wish to prevent changes to the body height
allowBodyStretch: true,
// enable if you want key and mouse events to be disabled for content that is blocked
bindEvents: true,
// be default blockUI will supress tab navigation from leaving blocking content
// (if bindEvents is true)
constrainTabKey: true,
// if true, focus will be placed in the first available input field when
// page blocking
focusInput: true,
// suppresses the use of overlay styles on FF/Linux (due to performance issues with opacity)
applyPlatformOpacityRules: true,
Changing the blockUI options is simple and can be done in one of two ways:
Global Overrides
You can change the default options by simply declaring different values for them. For example:
// change message border
$.blockUI.defaults.css.border = '5px solid red';
Local Overrides
Local overrides are achieved by passing an object to the blockUI, unblockUI, block or unblock functions.
The exact same options are available to the local options object as are available in the global object. For
example:
// change message border
$.blockUI({ css: { border = '5px solid red'} });
...
...
www.malsup.com/jquery/block/#demos 6/7
11/10/2010 jQuery BlockUI Plugin (v2)
What has changed in version 2 of the BlockUI plugin?
Is my code that used the old blockUI plugin compatible with the new 2.0x version?
No, not if that code was passing options to blockUI. The manner in which options are passed has
changed slightly. See the Options page for details on how to pass options in the new version.
Does the BlockUI Plugin have any dependencies on other plugins?
No.
How do I use an external stylesheet to style the blocking message?
See this demo page.
How do I use an external stylesheet to style the blocking overlay?
See this demo page.
Can I change the default message text used when blocking the page?
Yes. The default message is stored in $.blockUI.defaults.message. You can change it simply by
assigning a new value, like this:
$.blockUI.defaults.message = "Please be patient...";
I don't want the message content to be centered. How do override the default position?
See this demo page.
Download
blockUI is available for download right here: jquery.blockUI.js.
The last version in the 1.x line, v1.33, is still available here: jquery.blockUI.1.33.js.
The old 1.x docs can be found here.
Support
Support for the BlockUI Plugin is available through the jQuery Google Group.
Change Log
changes.txt
The BlockUI Plugin and this documentation are the work of Mike Alsup. Send comments to jquery at malsup
dot com.
www.malsup.com/jquery/block/#demos 7/7