2012-05-23 48 views
1

我有一個jQuery對話框()顯示所有數據(文本框,下拉菜單等)之前顯示的問題。如何在加載所有相關數據之前顯示JQuery對話框?

我只需撥打:

$("#myDiv").dialog("open") is called 

然後在對話框屬性:

 $("#myDiv").dialog({ 
     title: "Edit User", 
     autoOpen: false, 
     height: 500, 
     width: 500, 
     modal: true, 
     open: function(event,ui){ 
     url = "/controller/action" + param; 
     $(this).load(url); 

     ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...}, 
     buttons: { 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     }, 
     close: function() { 
      allFields.val("").removeClass("ui-state-error"); 
     } 
    }); 

那麼將打開一個對話框後,在約一秒鐘閃爍,並得到了一些數據。有時它滯後,數據根本不在這些字段中。我可能必須多次關閉/重新打開對話框,才能最終填充對話框。 非常令人沮喪。

讓這個工作最簡單的方法是什麼?我希望對話框彈出窗口每次都適當地填充數據,並且在準備好之前不要顯示。

+0

你有沒有考慮過先製作ajax調用,然後在成功接收數據時調用對話框?即使在所有你可能想要拋出一個加載動畫之前。 – ToddBFisher

回答

1

這裏的問題是:

 open: function(){ 
    ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...}, 

不要在開放的,填充上創建

create: function(){ 
    ...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...}, 
+0

問題在於,在頁面加載時創建觸發器,而不是在對話框即將彈出時觸發。我不知道什麼信息加載到對話框中,直到點擊頁面上的特定鏈接。 – Shenaniganz

+0

讓我問你這個。有沒有辦法強制這個「創建」事件觸發需求?比方說,當我點擊一個特定的鏈接,並知道什麼Id傳遞給我的彈出窗口? – Shenaniganz

1

你可以在Ajax/Json的前嘗試BlockUI插件和塊調用和解除封鎖後,他們。這也可以讓你在對話框中顯示一個加載div。

$.blockUI() 
// ajax/json calls 
$.unblockUI(); 
相關問題