Javascript Dijit事件在动态窗格中不起作用

Javascript Dijit事件在动态窗格中不起作用,javascript,dojo,dijit.form,Javascript,Dojo,Dijit.form,有人能告诉我为什么这些都不管用吗 编辑 (万一链接出现问题,这个问题是关于如何在加载到dijit窗格的页面中不触发事件。这适用于Firefox 6.0.2、Crome 12.0.742.100和Opera 11.00.1156) dojo.addOnLoad(函数(){ dijit.byId(“mainSettings”).set(“href”、“index2.html”); }); 开/关 日期 数 正文 警报(“变更”); 开/关 日期 数 正文 警报(“变更1”); 变化2 警报(“变更

有人能告诉我为什么这些都不管用吗

编辑 (万一链接出现问题,这个问题是关于如何在加载到dijit窗格的页面中不触发事件。这适用于Firefox 6.0.2、Crome 12.0.742.100和Opera 11.00.1156)


dojo.addOnLoad(函数(){
dijit.byId(“mainSettings”).set(“href”、“index2.html”);
});
开/关
日期
数
正文
警报(“变更”);
开/关
日期
数
正文
警报(“变更1”);
变化2
警报(“变更2”);
dojo.addOnLoad(函数(){
connect(dijit.byId('button2'),'onClick',function(){
警报(“变更3”);
});
});
按钮2
编辑 Dojango代码:

#forms.py

type = CharField(widget=Select(choices=VARIABLE_CHOICES,attrs={'onChange':'letterVariableTypeSelectChange'}))

#template

{{ form.type }}
<script>
    function letterVariableTypeSelectChange(){
        alert("dave");
    }
</script>
#forms.py
type=CharField(widget=Select(choices=VARIABLE_choices,attrs={'onChange':'letterVariableTypeSelectChange'}))
#模板
{{form.type}
函数letterVariableTypeSelectChange(){
警惕(“戴夫”);
}

尝试在dojox.layout.ContentPane上将
executeScripts
parseOnLoad
属性设置为true

<div id="main" dojoType="dijit.layout.BorderContainer">
        <div dojoType="dojox.layout.ContentPane" executeScripts="true" parseOnLoad="true" splitter="false" id="mainSettings" region="center"></div>
</div>

在如何使用dojo/method方面,似乎也存在着根本性的差异

标记应该位于它们所覆盖的元素内部

请注意您的代码段是如何定义的:

<select dojoType="dijit.form.Select">
    <option value="bool">On/Off</option>
    <option value="date">Date</option>
    <option value="float">Number</option>
    <option value="text">Text</option>
    <!--Script tag inside widget node, event is the name of the event to override -->
    <script type="dojo/method" event="onChange">
        alert("change");
    </script>
</select>

开/关
日期
数
正文
警报(“变更”);
与那些不起作用的相比:

<!--onChange here is specified directly on the widget (which is incorrect), should be in the 
    <script type="dojo/method" event="OnChange"> 
-->
<select dojoType="dijit.form.Select" onChange="change1">
    <option value="bool">On/Off</option>
    <option value="date">Date</option>
    <option value="float">Number</option>
    <option value="text">Text</option>
</select>
<!--script tag outside the select.  event refers to a nonexistent event for the widget.-->
<script type="dojo/method" event="change1">
    alert("change1");
</script>

开/关
日期
数
正文
警报(“变更1”);
您可以在给定小部件的参考文档中获得可用事件的列表,您可以使用dojo/method覆盖这些事件


否决这篇文章的人能给出理由吗?我猜你被否决是因为StackOverflow不是众源调试器。一篇简单地说“为什么这不起作用”的帖子没有显示出太多的努力。感谢
executeScripts=“true”parseOnLoad=“true”
我不知道这一点,我已经将代码附加到页面上的
dojox.layout.ContentPane
,但没有任何效果:(我想知道您是否可以将
放在输入字段之外,因为我使用的是dojango,无法将它们放在里面(django为您声明小部件,如果您自己声明,django将不会填充它)你能用相关的dojango代码更新你的问题吗?我剪切并粘贴了dojango代码,但我担心我的问题更系统化。如果我剪切并通过dojango生成的html到一个简单的页面,它就会工作。如果我剪切并通过带有
的html到一个简单页面,错误是
let未定义terVariableTypeSelectChange
。生成的代码是:
开/关日期数字文本函数aaa(){alert(“dave”);}
ContentPane
s是一个
dijit.layout.ContentPane
而不是一个
dojox.layout.ContentPane
。这可能解决了我的dojango问题,但我不知道为什么有些事件会在静态页面而不是动态页面中触发
<!--onChange here is specified directly on the widget (which is incorrect), should be in the 
    <script type="dojo/method" event="OnChange"> 
-->
<select dojoType="dijit.form.Select" onChange="change1">
    <option value="bool">On/Off</option>
    <option value="date">Date</option>
    <option value="float">Number</option>
    <option value="text">Text</option>
</select>
<!--script tag outside the select.  event refers to a nonexistent event for the widget.-->
<script type="dojo/method" event="change1">
    alert("change1");
</script>