2012-08-27 59 views
0

我有folowing代码,其中我使用块ui,但它没有阻止page.i我使用ajax调用来获取用户控制结果(局部视图)加载到页div中的div.during ajax调用我想要使用blockui来阻止整个页面。blockUI不工作

$('#btnGO').click(function() { 


     if (validate()) { 
      alert("loading"); 
      $.blockUI({ message: '<img src="/Content/images/ajax-loader.gif"/>' }); //this is not working 

      $.ajax({ 

       type: "POST", 
       url: "/Controller/action/", //to get the partial view 
       async: false, 
       cache: false, 
       beforeSend: function() { 

       }, 
       complete: function() { 
        alert("ajax complete event") 
        $.unblockUI(); 
       }, 

       data: $('#frmPassBook').serialize(), 
       error: function(xhr, status, error) { 
        $('#ErrorMessage').html(xhr.responseText); 
        $("#ErrorMessage").stop().show('slow'); 
        $('#ui-widget').show(); 
        $.unblockUI(); 
       }, 
       success: function(data) { 
        $("#aCBDetails").parent().show(); 
        $("#divCBDetails").hide("blind"); 
        $("#aCBDetails span:first").removeClass("ui-icon-circle-triangle-n").addClass("ui-icon-circle-triangle-s"); 
        $('#ui-widget').hide(); 
        //loading html in div 
        $("#div").html(data); 

if ($("#rbMain") != undefined) { 

         if ($("#rbMain").attr("checked")) { 
          $(".subTrId").hide(); 
          $("#spSub").hide(); 
          $("#spMain").show(); 

         } 
         else { 
          $(".subTrId").show(); 
          $("#spSub").show(); 
          $("#spMain").hide(); 

         } 
        } else { 

         $("#spSub").show(); 
         $("#spMain").hide(); 
        } 

//unblocking after div is loaded with html 
        $.unblockUI(); 
       } 
      }); 
     } else { 

      $.unblockUI(); 

     } 
     return false ; 
    }); 

回答

1

使用baseZ索引来阻止整个页面 例如。

$.blockUI({ 
              message: "<img src="/Content/images/ajax-loader.gif"/>", 
              baseZ: 9000, 
              css: { 
               top: ($(window).height() - 400) /2 + "px", 
               left: ($(window).width() - 400) /2 + "px", 
               width: "400px"} 
}); 
+0

应用这个为$ .blockUI({ 消息: '', baseZ:9000, CSS:{ 顶部:($(窗口).height() - 400)/ 2 + “PX”, 左: ($(window).width() - 400)/ 2 +“px”, width:“400px” } });但它没有工作对不起。 – amol

+0

为什么你接受这个答案,如果它不是什么帮助你? –

0

尝试使用ajaxStartajaxStop方法的jQuery。这些将使您能够在ajax调用开始时应用装载器,并在它结束时将其删除。

+0

他已经做的是,在'complete'和'error'回调.. –

+0

而不是使用其他插件阻止用户界面的,就越容易的事情可以绑定默认jQuery中提供了ajaxStart和ajaxStop 。 – Ankur

+2

感谢所有的回应,但是当我评论出异步:假它的工作! – amol