2014-06-17 125 views
3

我有一個按鈕的onclick設置爲使用以下函數EditContact。這個函數設置一個jQuery對話框,從服務器獲取數據並顯示它。一切正常,但我想讓它工作得更好一點。現在,空的對話框彈出,代碼需要花費時間從服務器獲取內容,然後對話框填充內容。我的問題是如何才能讓對話框在收到內容之前不會彈出。如何在檢索內容之前隱藏jQuery對話框?

function EditContact() { 
     $('#editContactView').dialog({ 
      modal: true, 
      width: 'auto', 
      position: ['top', 'center'], 
      resizable: false, 
      autoOpen: false, 
      open: function (event) { 
       var szAction = "Content url for this example"; 
       $(this).load(szAction, 
         function (response, status, xhr) { 
          $('#editContactView').dialog('open'); 
          return false; 
         }); 
      } 
     }); 

     $('#editContactView').dialog('open'); 

    } 

回答

1

我想你應該能夠基本把你的內在本性出來,並打開該對話框上$()。load()方法完成。像這樣的東西可能會做到這一點:

function editContact() { 
    var szAction = "Content url for this example"; 
    $(this).load(szAction, function (response, status, xhr) { 
     $('#editContactView').dialog({ 
      modal: true, 
      width: 'auto', 
      position: ['top', 'center'], 
      resizable: false 
     }); 
    }); 
} 

編輯: 通知我刪除了{的AutoOpen:假}。這將創建它並在收到內容後一次打開它。

+0

我認爲這接近需要做的事情,但現在它不適合我。當我開始工作時,我會回覆。 – user3648646

+0

我認爲'$(this).load()'實際上應該是'$('#editContactView')。load()'在這種情況下。 – tengbretson

+0

我有一個語法錯誤導致我的問題,這個解決方案工作。感謝您的意見。 – user3648646

1

要調用.dialog('open')兩次:在代碼的結尾,並在回調的負荷。

如JavaScript是異步的,則接收的數據之前運行在端線$('#editContactView').dialog('open');

刪除此行應解決該問題。

+0

這是我嘗試的第一件事,它沒有奏效。感謝您的幫助。 – user3648646