如何从另一个对话框

问题描述:

我无法从其他dijit.Dialog打开dijit.Dialog打开道场对话框。我已经在这里看到其他帖子,表明它可以在Dojo版本1.5下正常工作,但我使用的是Dojo 1.6.1,并没有太多运气。在http://dojotoolkit.org/documentation/tutorials/1.7/dialogs_tooltips/道场文件似乎表明,这是支持的地方说,“一个重要的事实了解的dijit /对话框是实例被添加到一个‘堆栈’,让你可以对彼此顶部的情况。”如何从另一个对话框

当我打电话展()从一个当前所示的第二个对话框,在第二个对话框是片刻几乎不可见,然后在浏览器刷新,只留下显示的第一个对话框。

这里有一个简单的例子:

<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作为模态对话框出现在背景上。

+1

你有一个锚标记,它触发一个document.location.href =“”因为的onclick回报。正确到'Open dialog 2' – mschr 2012-07-15 23:29:51

+0

@mschr非常感谢你!这工作完美。你有解释为什么这些修改是必要的。此外,你把这个评论,但如果你把它在一个答案,我会把它标记为答案,所以你得到信用。 – 2012-07-28 17:49:19

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

如下图: Which "href" value should I use for JavaScript links, "#" or "javascript:void(0)"?

正确

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

如果的onclick返回true(该.show()确实是),那么<a>的预期行为是可以预料的,你就是点击链接,将带你到另一个页面。虽然href是空白,然后重新加载相同的页面。

+0

感谢您的澄清,@mschr和支持参考! – 2012-07-30 21:19:12