I wish to disable all page elements upon an action. Like the modal feature that is in the JQuery UI.
Like on an ajax action.. I wish to show a notification and at the same time to enable the modal feature. And after the request, need to re-enable the page elements back.
Is there any option available in core jquery for that or any plugins?
The page elements are not disabled - doing that would be quite tedious - but rather, a semi-transparent div
is overlayed on top of all other page elements. To do this, you would probably do something like
// Declare this variable in the same scope as the ajax complete function
overlay = $('<div></div>').prependTo('body').attr('id', 'overlay');
And the CSS:
#overlay {
position: fixed;
height: 100%;
width: 100%;
z-index: 1000000;
background: url('link/to/semitransparent.png');
}
Then once the action is complete, you simply remove it like this:
overlay.remove();
No need to include jQuery UI if this is the only thing you need it for.
One easy way to achieve this is to define a css class like this:
.dark-class
{
background-color: #F0F0F0;
filter:alpha(opacity=50); /* IE */
opacity: 0.5; /* Safari, Opera */
-moz-opacity:0.50; /* FireFox */
z-index: 20;
background-repeat:no-repeat;
background-position:center;
width: 100%;
height: 100%;
position:absolute;
top: 0px;
left: 0px;
}
Use jQuery to add this class to an empty div that is the first child of the body element. Remove the class to disable modal mode.
Your notification should have a z-index higher than the z-index of the dark-class. All items that need to be disabled must have a lower z-index.
I like Jiang's idea but you do not need image with the following overlay style sheet.
#overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0.8;
filter: alpha(opacity=80);
z-index:50;
}
Try adding a style of "pointer-events: none;" to the body.
To remove it use pointer-events: auto;
More info here
https://css-tricks.com/almanac/properties/p/pointer-events/
Though there may be issues with earlier browsers not supporting it