will
will

Reputation: 3191

jquery blockUI tell if page or specific element is blocked

Is there a way to tell if $.blockUI(); has been called but $.unblockUI() has not been called? Ideally this should be able to work for both blocking the full page and specific elements.

I'd expect it to work something like this

> $.blockUI();
> $.isBlockUI?():
>> true
> $.unblockUI();
> $.isBlockUI?();
>> false

Upvotes: 16

Views: 8268

Answers (4)

kevinpo
kevinpo

Reputation: 1963

This can find all specific elements that are currently blocked:

const $blockedElements = $("*").filter(function() { return $(this).data("blockUI.isBlocked") === 1 });

Upvotes: 0

Robin Maben
Robin Maben

Reputation: 23034

I use a more primitive hack :

var isUIBlocked = $('.ui-widget-overlay:visible').length > 0;

if(isUIBlocked){
  // something is displayed with an active overlay, hence stop
}

This works for me even when using .dialog() with modal:true

Upvotes: 4

Oleg
Oleg

Reputation: 1359

var data = $('#element').data();
//will return Object like: { blockUI.isBlocked=1, blockUI.onUnblock=null} 

if (data["blockUI.isBlocked"] == 1)
// is blocked
else
// is not blocked

Upvotes: 32

Carl Finch
Carl Finch

Reputation: 152

Look what I found here

  $(document).ready(function() { 
    $('#demo14').click(function() { 
        $.blockUI({ 
            fadeIn: 1000, 
            timeout:   2000, 
            onBlock: function() { 
                alert('Page is now blocked; fadeIn complete'); 
            } 
        }); 
    });

Evidently there's one for Block and unBlock sorta like a onSuccess function. So on the onBlock function you'd simply just set a global boolean value.

Hope this helps!

Happy Coding! ;)

Upvotes: 10

Related Questions