2012-11-26 33 views
5

我尝试dojotoolkit 1.8和无法弄清楚如何挂钩的道场/形式的onchange事件/选择道场/表格/选择onchange事件在道场不是为我工作1.8

自认倒霉

情况
require(["dojo/dom","dojo/on"], function(dom,on){ 
    on(dom.byId("myselect"),"change",function (evt){ 
     alert("myselect_event"); 

}); 

相反,如果以下勾成单击Works:

on(dom.byId("myselect"),"click",function (evt){ 
  • ,但我想捕获用户点击后的值并改变

我敢肯定它比回到纯醇的JavaScript的onChange ...

THX简单

+2

你混合了Dijit的对象和DOM节点。 @喷嘴人的解决方案应该可以工作。如果您想了解更多信息,请查看[Dojo无法以编程方式连接dijits?](http://stackoverflow.com/questions/8454552/dojo-cant-programmatically-concatenate-djits/8455984#8455984) – phusick

回答

4

你可以尝试这样的事:

var select = dijit.byId('myselect'); 

    select.on('change', function(evt) { 
     alert('myselect_event'); 
    }); 

我已经多次在参考指南中看到这一点,例如in the dijit/form/select' s reference-guide'A Select A By A Store'

也许它甚至回到了handle,我到目前为止没有看过这个。但我想它应该工作。

编辑:

考虑@ phusick的评论,我想补充一点,你也可以简单地改变"change""onChange"domdijit内调用on(...)

+0

Thx这么多你们 - 还是有点新的JS/Dojo ... – Aveesh

+0

嗯,我们很高兴beeing能够帮助你!那么接受答案怎么样? ;) – nozzleman

+0

会接受 - 让我想象如何:-) - 也是新的! – Aveesh

2

中的脚步@ nozzleman的答案尝试

var select = registry.byId('myselect'); 

select.on('change', function(evt) { 
    alert('myselect_event'); 
}); 

如果使用on代替connect那么你不必写onChange,你可以简单地写change

+0

Thx--额外的说明 - 正在使用element.on比使用on(domnode,“event”)更好地构造,还是仅仅说出同样的东西的两种方式...... – Aveesh

+0

我认为前者更好是因为2个原因。首先,它遵循其他JS框架的API(如jQuery),其次,它可能会在未来成为本地的。 –

0

类似于上面的答案,做一个dijit.ById来找到正确的元素,然后注册'onItemClick'事件。

创建选择下拉编程追加_menu到您所创建的选择项目,使“搜索”变成了“search_menu”页面上的初始化,您可以执行以下任何节点:

dojo.connect(dijit.byId('search_menu'),'onItemClick',function(){ 
     //console.log("search menu"); 
     doSearch('recreation'); 
    });  
0

正如其他人所指出的,你正尝试使用DOM访问Dijit。此外,“更改”事件的匿名功能的参数是用户选择的,而不是事件本身。

这里是你的代码修改,以访问的Dijit和处理“变”事件:

require(["dijit/registry", "dojo/on"], function(registry, on) { 
    on(registry.byId("myselect"), "change", function (value) { 
     alert("change_event.value = " + value); 
    }); 
}); 
0

迟到了,但我最近遇到了这个问题。希望我的回答能帮助一些可怜的人维护一些遗留代码。答案是为组合框,但为选择工作 -

onChange不足以触发从Dojo Combobox查询。需要将侦听器附加到下拉项目。

select.dropDown.on("itemClick", function(dijit, event) { 
var node = dijit.domNode; 
console.log(domAttr.get(node, "data-info-attribute")); 
// or 
console.log(node.dataset.infoAttribute); 
}); 

编号:https://stackoverflow.com/a/12422155/4564016