Javascript Dojo事件未触发

Javascript Dojo事件未触发,javascript,ajax,dojo,dom-events,Javascript,Ajax,Dojo,Dom Events,我有一个Dojo选项卡容器,当我单击某些按钮时,会动态添加一个新选项卡,其内容通过Ajax下载。这些选项卡包含动态表单元素,Dojo可以很好地解析和加载这些元素。我还包括Javascript块,它们是每个选项卡的专用块,这些块也可以通过Ajax下载。。。但是,没有一个Javascript块可以执行 选项卡内容示例: <input id="test" name="test" type="text" dojoType="dijit.form.ValidationTextBox" />

我有一个Dojo选项卡容器,当我单击某些按钮时,会动态添加一个新选项卡,其内容通过Ajax下载。这些选项卡包含动态表单元素,Dojo可以很好地解析和加载这些元素。我还包括Javascript块,它们是每个选项卡的专用块,这些块也可以通过Ajax下载。。。但是,没有一个Javascript块可以执行

选项卡内容示例:

<input id="test" name="test" type="text" dojoType="dijit.form.ValidationTextBox" />

<script type="text/javascript">
   dojo.connect(dijit.byId('test'), 'onClick', function(evt){
       alert('testing 123');
   });
</script>

connect(dijit.byId('test'),'onClick',function(evt){
警报(“测试123”);
});
但是,如果我这样做,则事件会触发:

<input id="test" name="test" type="text" dojoType="dijit.form.ValidationTextBox">
    <script type="dojo/method" event='onClick'>
         alert('testing 123');
    </script>
</input>

警报(“测试123”);

我的问题是,为什么第一个示例中的Javascript块不起作用?这是Dojo限制吗?此外,我还尝试在加载小部件后设置它们的属性和值。如果我必须使用类似于
dojo.addOnLoad()
的东西,那么我该如何激活它呢?因为它需要一个Javascript块,而按照第一个示例,它不起作用。。。没有等效的小部件onLoad事件,所以我也不能使用第二种方法。。。你知道怎么做吗?

看起来你需要使用dojo.hitch,这样你的函数在实际调用时就在范围内了。尝试使用:

dojo.connect(dijit.byId('test'), 'onCLick', dojo.hitch(this, function(evt) {
      alert('testing123');
}));

您可以在此处阅读更多信息:

您必须确保小部件已首先被解析。这样做:

dojo.addOnLoad(function(){/*connect code*/});
“选项卡内容”实际上是一个内容窗格元素。除非使用
,否则不能在内容窗格中调用javascript。至少这是我所知道的

更新:如果您使用
dojox.layout.ContentPane
而不是
dijit.layout.ContentPane
的话,它里面所有关于js的问题都会消失。来自Dojo参考指南:

dojox.layout.ContentPane是dijit.layout.ContentPane的扩展,提供脚本执行等功能