【发布时间】:2013-01-20 06:53:52
【问题描述】:
我有 2 个 Razor 视图,其中一个在 jQuery UI 对话框中加载另一个。在对话框中加载的视图中;我正在打开另一个 jQuery UI 对话框来显示一条消息。
目标是在单击消息对话框Cancel 按钮时关闭两个对话框。
Razor 代码如下:
主视图
<button id="openModel" onclick="openModel()">
<div id="mainDialog" />
<script type="text/javascript">
function openModel() {
$('#mainDialog').dialog({
open: function () {
// loading "the secondary view in the model dialog"
// url: controller-action url to load the second view
$(this).load('url');
}
});
}
</script>
对话框视图
<button id="messageOpener">Verify</button>
<div id="messageDialog" />
<script type="text/javascript">
$(document).ready(function () {
$("#messageOpener").click(function () {
$("#messageDialog").dialog("open");
return false;
});
$("#messageDialog").dialog({
buttons: {
Retry: function () {
$(this).dialog("close");
},
Cancel: function () {
// **** ?? must close both dialogs. ****
}
},
autoOpen: false,
});
});
</script>
我尝试了以下方法来关闭对话框:
方法 01:
$(".ui-dialog-content").dialog("close");
方法 02:
$(this).dialog("close");
$("#mainDialog").dialog("close");
方法 03:
$(".ui-dialog:visible").find(".dialog").dialog("close");
但以上所有内容都没有按预期关闭对话框,而是产生以下 JS 错误:
未捕获的错误:无法在初始化之前调用对话框上的方法;试图调用方法“关闭”
v.extend.error
(匿名函数)
v.extend.each
v.fn.v.each
e.fn.(匿名函数)
$.dialog.buttons.Cancel
r.click
v.event.dispatch
o.handle.u
【问题讨论】:
-
当你在消息对话框关闭时输入
$("#mainDialog").dialog("close");会发生什么?方法 2 看起来不错 -
@vimalnath,谢谢。是的,
$("#mainDialog").dialog("close");关闭了 messageDialog 而不是 mainDialog 也给出了同样的错误。 -
您是否尝试过提前定义模态(即 var firstDialog = $("#messageDialog").dialog({autoOpen: false, ...}); 第二个和随意关闭它们,因为您可以同时访问它们。
-
另一种方法是在第一个模态关闭时自动关闭第二个模态。即 var firstModal = $('#mainDialog').dialog({close: function(){ /* 关闭第二个模态方法调用 */}});
-
@DennisRongo,谢谢。您能否用更详细的代码 sn-p 详细说明您的第一篇文章。根据您的第二篇文章:假设我正确理解您;不,两个对话框必须仅在单击取消按钮时关闭,而不必在最后一个对话框关闭时关闭。
标签: javascript jquery asp.net-mvc jquery-ui razor