2011-04-19 276 views
0

這個概念看起來很簡單,但我在執行它時遇到了很多問題。Jquery UI關閉對話框和打開新對話框

我需要關閉當前對話框並打開另一個對話框。它會關閉#imageModal,但不會打開#uploadModal。

有什麼建議嗎?

編輯:增加了#uploadModal

$("#imageModal").dialog({ 
    autoOpen: false, 
    height: 500, 
    width: 500, 
    modal: true, 
    closeOnEscape: true, 
    resizable: false, 
    buttons: { 
     'Upload Image': function() { 
      // CLOSE 1 DIALOG AND OPEN ANOTHER 
      $(this).dialog('close'); 
      $('#uploadModal').dialog('open'); 

     }, 
     Cancel: function() { 
      $(this).dialog('close'); 
     } 
    }, 
    close: function() { 
     $(this).dialog('close'); 
    } 
}); 


$("#uploadModal").dialog({ 
    autoOpen: false, 
    height: 500, 
    width: 500, 
    modal: true, 
    closeOnEscape: true, 
    resizable: false, 
    buttons: { 
     'Upload Image': function() { 


     }, 
     Cancel: function() { 
      $(this).dialog('close'); 
     } 
    }, 
    close: function() { 
     $(this).dialog('close'); 
    } 
});   
+0

我們可以看到#uploadModal的HTML/JS嗎? :)另外,請確保$(this)不是您單擊的按鈕,而是調用.dialog('close')事件時的對話框本身... – pixelbobby 2011-04-19 14:50:12

+0

@pixelbobby添加了#uploadModal html和$(this) .dialog('close')正常工作,它只是不打開#uploadModal,謝謝! – 2011-04-19 14:57:41

+0

Thx。看看你的代碼,Christian的建議似乎可以奏效。確保你將它標記爲答案,如果是這種情況:) – pixelbobby 2011-04-19 15:02:27

回答

2

使用時的對話已經完成了他的任務,執行回調函數。

[...] 
'Upload Image': function() { 
       // CLOSE 1 DIALOG AND OPEN ANOTHER 
       $(this).dialog('close', function() { 
        $('#uploadModal').dialog('open'); 
       }); 

}, 
[...] 
+0

感謝您的建議,但解決方案無法正常工作。它關閉了當前對話框,但沒有打開#uploadModal。我嘗試了一個簡單的警報(「測試」);它也沒有工作。 – 2011-04-19 15:01:10

+0

它在調試控制檯中說了些什麼?另一件事,你是否宣佈$(document).ready(function(){...});在所有這些指示之前? – Cristian 2011-04-19 15:08:55

+0

是的,我宣佈$(function(){...});在一切之前。 #imageModal完全打開和關閉,但不會關閉#uploadModal,並且在與此相關的調試器日誌中沒有錯誤。 – 2011-04-19 15:38:01

1

嗯,你有沒有改變關閉和打開的順序?我們說,首先打開下一個對話框,然後關閉第一個對話框?

1 - This;

// CLOSE 1 DIALOG AND OPEN ANOTHER 
    $(this).dialog('close'); 
    $('#uploadModal').dialog('open'); 

2 - 爲:

// CLOSE 1 DIALOG AND OPEN ANOTHER 
    $('#uploadModal').dialog('open'); 
    $(this).dialog('close'); 
0
$(this).dialog('close'); 
$('#uploadModal').dialog('open'); 

這實際工作正常,我(jQuery的1.7 jQuery的UI 1.8)。建議的答案只關閉對話框,並不打開新的答案。

0

嘗試在setTimeout中打包您的「uploadModal」公開呼叫。

'Upload Image': function() { 
    // CLOSE 1 DIALOG AND OPEN ANOTHER 
    $(this).dialog('close'); 
    setTimeout(function() { 
     $('#uploadModal').dialog('open'); 
    }, 100); 
}, 

您也可以通過綁定到對話框的關閉事件..

$("#uploadImage").bind("dialogClose", function() { 
    // code goes here 
}); 

,但我認爲首先將正常工作,你想要的東西。

0

是的,這已經在這裏了一下。我正在尋找如何解決同樣的問題。我發佈了更多需要的代碼,以便您可以看到發生了什麼。我使用當前對話框的名稱關閉並打開新的名稱。 Works ...

//============= User Modal ===============================// 

$("#dialog-message").dialog({ 
    autoOpen: false, 
    modal: true, 
    resizable: false, 
    width: 650, 
    buttons: { 
     Add: function() { 
      $('#dialog-message').dialog("close"); 
      $('#dialog-message3').dialog("open"); 
     } 
    } 
}); 

$("#opener").click(function() { 
    $("#dialog-message").dialog("open"); 
    return false; 
}); 

//========== Add User Modal ============================ // 
$("#dialog-message3").dialog({ 
    autoOpen: false, 
    modal: true, 
    resizable: false, 
    width: 250, 
    buttons: { 
     Save: function() { 
      $('#dialog-message3').dialog("close"); 
     } 
    } 
});