2012-01-09 91 views
1

我試圖手動關閉按鈕點擊Jquery Dialog window而不使用$('#id').dialog('close')命令。手動關閉Jquery對話窗口

原因是我打開ajax調用時會打開對話窗口,所以.dialog不再適用於響應。我的問題是,我設法通過刪除窗口本身和疊加層的div來手動關閉對話框窗口,但由於某些原因,背景窗體仍然保持禁用狀態。

即使一切似乎都被刪除,仍然無法點擊按鈕或表單域,所以我想知道是否我錯過了一些東西。有誰知道還有什麼Jquery用來禁用模式對話框窗口的背景嗎?

更新 我試圖從HomeController返回視圖,努力以某種方式手動刪除覆蓋和窗口後刷新頁面。該網頁仍然被禁用,但我還沒有找出原因。

+1

是不是很容易,只需創建一個範圍,其中兩個Ajax調用和顯示對話框功能駐留在? – PeeHaa 2012-01-09 17:04:25

+0

你如何加載你的ajax?通常關閉應該在這個調用之後工作...並且對於沒有響應的表單,這可能是由於一些覆蓋,不是嗎? – 2012-01-09 18:29:31

+0

你能舉一個你如何創建這樣一個範圍的例子嗎? – Nozoku 2012-01-09 19:58:07

回答

1

基於在您的描述中,聽起來像ajax調用正在以某種方式修改頁面,這會改變jQueryUI對話框所基於的div。在div(或其他元素)上調用dialog方法後,它實際上屬於jQueryUI,並且在調用.dialog("destroy")之前不得觸摸它。你必須:

  1. 確保該jQueryUI的周圍不是由AJAX調用的結果或

  2. 之前觸及加上股利,並標記在div被修改,通話$("#id).dialog("destroy");然後在ajax調用完成後再重新創建對話框。

+0

這工作。謝謝! – Nozoku 2012-01-13 14:48:23

0

指定點擊功能按鈕來

$("#button").click(function() 
{ 
$("#id").dialog('close'); 
}); 

$(".selector").bind("dialogclose", function(event, ui) { 
    ... 
}); 

也許我不明白你的問題:)

+0

我已經完成了這些。在Ajax調用之後關閉函數不再起作用,因爲對話窗口不再被實例化。重新設置對話框窗口會導致不希望的效果。 – Nozoku 2012-01-09 19:59:57

+0

爲我提供JavaScript代碼(僅限於對話框的ajax)才能完全查看問題。 – 2012-01-10 06:28:51

0

不知道如何不起作用:

$("#modal").dialog({ 
     autoOpen : false, 
     modal : true 
    }); 

    // to open 
    $("#modal").dialog("open"); 

    // to close 
    $("#modal").dialog("close"); 
1

試試這個:

window.parent.jQuery('#ModalDialog').dialog('destroy');