0

我无法从另一个 dijit.Dialog 打开 dijit.Dialog。我在这里看到其他帖子表明它从 Dojo 版本 1.5 开始运行良好,但我使用的是 Dojo 1.6.1 并且运气不佳。http://dojotoolkit.org/documentation/tutorials/1.7/dialogs_tooltips/上的 Dojo 文档似乎暗示这是支持的,它说:“了解 dijit/Dialog 的一个重要事实是实例被添加到”堆栈“这样你就可以在另一个之上拥有实例。”

当我从当前显示的对话框中调用第二个对话框时,第二个对话框几乎不可见,然后浏览器刷新,只显示第一个对话框。

这是一个简单的例子:

<html>
<head>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dijit/themes/claro/claro.css" />
    <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js" djConfig="parseOnLoad: true"></script>
    <script type="text/javascript">
        dojo.require("dijit.dijit");
        dojo.require("dijit.Dialog");
        dojo.ready(function () {
            dijit.byId("dialog1").show();
        });
    </script>
</head>
<body class="claro">

    <div data-dojo-type="dijit.Dialog" id="dialog1" data-dojo-props="title:'Dialog 1'">
        I'm dialog 1
        <a href="" onclick="dijit.byId('dialog2').show();">Open dialog 2</a>
    </div>

    <div data-dojo-type="dijit.Dialog" id="dialog2" data-dojo-props="title:'Dialog 2'" style="visibility:hidden;">
        I'm dialog 2
    </div>

</body>
</html>

我有一种感觉,我错过了一些简单的东西。有人可以帮帮我吗?理想情况下,dialog1 将留在背景中,而 dialog2 作为模态对话框出现在其顶部。

4

1 回答 1

1

您有一个锚标记,它会触发 a ,document.location.href = ""因为 onclick 返回true

请参阅以下内容: 我应该为 JavaScript 链接使用哪个“href”值,“#”还是“javascript:void(0)”?

更正为

<a href="javascript:void(0); " 
       onclick="dijit.byId('dialog2').show(); return false ">
                                        <!-- note 'false' -->
 Open dialog 2</a>

如果 onclick 返回 a true(the .show()does that) ,那么 an 的预期行为<a>是可以预期的,您单击的链接会将您带到另一个页面。当href为空白时,将重新加载同一页面。

于 2012-07-29T18:56:14.357 回答