Javascript Dojo事件未触发
我有一个Dojo选项卡容器,当我单击某些按钮时,会动态添加一个新选项卡,其内容通过Ajax下载。这些选项卡包含动态表单元素,Dojo可以很好地解析和加载这些元素。我还包括Javascript块,它们是每个选项卡的专用块,这些块也可以通过Ajax下载。。。但是,没有一个Javascript块可以执行 选项卡内容示例: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" />
<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的扩展,提供脚本执行等功能