我正在尝试dojotoolkit 1.8并且无法弄清楚如何连接dojo / form / select的onchange事件
此
没有任何结果require(["dojo/dom","dojo/on"], function(dom,on){
on(dom.byId("myselect"),"change",function (evt){
alert("myselect_event");
});
如果相反,以下钩子进入点击工作:
on(dom.byId("myselect"),"click",function (evt){
我确信它比回到Plain ol javascript onChange ...
更简单THX
答案 0 :(得分:4)
您可以尝试这样的事情:
var select = dijit.byId('myselect');
select.on('change', function(evt) {
alert('myselect_event');
});
我已经多次在参考指南中看到过这种情况,例如{em>'选择按商店付款'{/ 3>的in the dijit/form/select' s reference-guide。
也许它甚至回归handle
,到目前为止我还没有看过这个。但我想它应该有用。
编辑:
考虑到@ phusick的评论,我想补充一点,您也可以在调用{{1}中简单地将"change"
更改为"onChange"
或将dom
更改为dijit
}
答案 1 :(得分:2)
跟随@ nozzleman的回答尝试
var select = registry.byId('myselect');
select.on('change', function(evt) {
alert('myselect_event');
});
如果您使用on
代替connect
,那么您不必撰写onChange
,只需撰写change
即可。
答案 2 :(得分:0)
与上述答案类似,执行dijit.ById查找正确的元素,然后注册'onItemClick'事件。
创建选择下拉列表以编程方式将_menu附加到您创建选择项的任何节点,以便'search'在页面init上变为'search_menu',您可以执行以下操作:
dojo.connect(dijit.byId('search_menu'),'onItemClick',function(){
//console.log("search menu");
doSearch('recreation');
});
答案 3 :(得分:0)
正如其他人所指出的那样,你正在尝试使用DOM访问Dijit。此外,“更改”事件的匿名函数的参数是用户选择的值,而不是事件本身。
以下是您修改的代码以访问Dijit并处理“更改”事件:
require(["dijit/registry", "dojo/on"], function(registry, on) {
on(registry.byId("myselect"), "change", function (value) {
alert("change_event.value = " + value);
});
});
答案 4 :(得分: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);
});