2011-05-04 67 views
2

所以我有我的UI按鈕調用此JavaScript函數:JQuery的對話框幫助

function OpenHistory(transactionId, spanThatWasClicked) 
    { 
     $.ajax({ 
      type: "POST", 
      url: "<%= Url.Action("ViewHistory", "Indications") %>", 
      data : { transactionId : transactionId }, 
      success: function(data) { 
       $("#history").html(data); 
       $("#history").dialog({ 
        modal: true, 
        resizable: false, 
        title: "Valuation History", 
        width: 850, 
        height: 500, 
        autoOpen: true, 
        buttons: { "Close": function() { $(this).dialog("close"); } } 
       }); 
      } 
     }); 
    } 

#history它的設置只是看起來像這樣在頁面上:<div id="history"></div>

我第一次點擊 - - 進行AJAX調用,打開對話框,一切都看起來很完美。

關閉對話框

我第二次單擊它 - 沒有任何反應。它使得AJAX調用和所有事情都成爲可能,但屏幕上沒有出現對話框。

刷新頁面

它可以追溯到上第一隻點擊,同上次一樣再次合作。

這是一些對話怪異?

謝謝。

回答

2

嘗試更改成功代碼這樣:

 success: function(data) { 
      $("#history").html(data) 
      .dialog({ 
       modal: true, 
       resizable: false, 
       title: "Valuation History", 
       width: 850, 
       height: 500, 
       autoOpen: true, 
       buttons: { "Close": function() { $(this).dialog("close"); } } 
      }).dialog('open'); 
     } 

這樣就會使確保其與dialog('open')呼叫

+0

尼爾打開你的天才:) – slandau 2011-05-04 18:42:20

+0

@slandau,還得感謝還得感謝還得感謝很^ _ ^ – Neal 2011-05-04 18:43:48

0

我認爲這是因爲一旦autoOpen不會在隨後的調用中觸發,對話框就已經創建。嘗試在ajax調用中添加$("#history").dialog("open"),看看是否有幫助。 你可以添加一些優化,以確保你不叫原來的對話框創建代碼兩次(某種布爾變量的)

0

您應該只用一次這個功能來創建對話框

  $("#history").dialog({ 
       modal: true, 
       resizable: false, 
       title: "Valuation History", 
       width: 850, 
       height: 500, 
       autoOpen: true, 
       buttons: { "Close": function() { $(this).dialog("close"); } } 
      }); 

要打開對話框調用$("#history").dialog("open");

我建議創建對話框時,先裝載autoOpen: false頁面,打開它們需要