2011-04-19 182 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"); 
     } 
    } 
});