5

我正在尝试 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");

});

相反,以下挂钩到 click 工作:

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

我相信它比回到普通的 javascript onChange 更简单......

谢谢

4

5 回答 5

4

你可以尝试这样的事情:

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

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

我在参考指南中多次看到这一点,例如在 dijit/form/select 的参考指南中的'A Select Fed By A Store'中。

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

编辑:

考虑到@phusick 的评论,我想补充一点,您也可以简单地将"change"to"onChange"或 the domto更改为dijit调用on(...)

于 2012-11-26T07:44:32.627 回答
2

跟随@nozzleman 的回答尝试

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

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

如果你使用on而不是connectthen 你不必写onChange,你可以简单地写change

于 2012-11-26T13:48:45.710 回答
0

与上述答案类似,执行 dijit.ById 以找到正确的元素,然后注册 'onItemClick' 事件。

以编程方式创建选择下拉菜单会将 _menu 附加到您创建选择项的任何节点,因此“搜索”在页面初始化时变为“搜索菜单”,您可以执行以下操作:

  dojo.connect(dijit.byId('search_menu'),'onItemClick',function(){
        //console.log("search menu");
        doSearch('recreation');
     });    
于 2013-02-14T21:00:56.130 回答
0

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

这是您修改后的代码以访问 Dijit 并处理“更改”事件:

require(["dijit/registry", "dojo/on"], function(registry, on) {
   on(registry.byId("myselect"), "change", function (value) {
         alert("change_event.value = " + value);
   });
});
于 2014-12-30T18:46:00.180 回答
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

于 2016-06-21T14:16:32.360 回答