Javascript 向Dojo FilteringSelect添加onChange事件

Javascript 向Dojo FilteringSelect添加onChange事件,javascript,dojo,Javascript,Dojo,我尝试添加了一个onChange事件,每次在FilteringSelect上进行选择时都要触发该事件,但似乎没有触发。我一直在尝试让on函数中的动作同时是change和onChange,并且两者都不起作用。我尝试将onChange作为FilteringSelect的一个参数,但也不起作用 我正在使用Dojo1.10 require(["dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/dom", "dojo/on", "dojo/do

我尝试添加了一个onChange事件,每次在FilteringSelect上进行选择时都要触发该事件,但似乎没有触发。我一直在尝试让on函数中的动作同时是change和onChange,并且两者都不起作用。我尝试将onChange作为FilteringSelect的一个参数,但也不起作用

我正在使用Dojo1.10

require(["dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/dom", "dojo/on", "dojo/domReady!"],
  function(FilteringSelect, Memory, dom, on) {
    var filteringSelect = new FilteringSelect({
      id: "zoom",
      name: "zoom",
      value: "z",
      intermediateChanges: true,
      store: new Memory({
        data: [
          {name:"Zoom", value:"z"},
          {name:"50%", value:".5"},
          {name:"75%", value:".75"},
          {name:"100%", value:"1"},
          {name:"125%", value:"1.25"},
          {name:"150%", value:"1.5"},
          {name:"175%", value:"1.75"},
          {name:"200%", value:"2"}
        ]
      }),
      searchAttr: "name"
    }, "zoomDiv").startup();
    on(filteringSelect, 'change', function(value) {
      console.log(value);
    });
});

dijit/form/FilteringSelect
作为一个奇怪的API。当用户在文本框中键入某个内容时,当您在为自动完成而打开的列表中选择某个内容时,会触发
onChange
,但当您从使用“打开”下拉按钮选择列表中的某个内容时,则不会触发

对于一致的事件,您可以查看属性
displayedValue

require([“dijit/form/FilteringSelect”,“dojo/store/Memory”,“dojo/dom”,“dojo/on”,“dojo/domReady!”),
函数(FilteringSelect、内存、dom、on){
var filteringSelect=新filteringSelect({
id:“缩放”,
名称:“缩放”,
值:“z”,
中间变化:是的,
存储:新内存({
数据:[{
名称:“缩放”,
值:“z”
}, {
名称:“50%”,
值:“.5”
}, {
姓名:“75%”,
值:“.75”
}, {
名称:“100%”,
值:“1”
}, {
名称:“125%”,
值:“1.25”
}, {
名称:“150%”,
价值:“1.5”
}, {
名称:“175%”,
值:“1.75”
}, {
名称:“200%”,
值:“2”
}]
}),
searchAttr:“名称”
}“zoomDiv”);
filteringSelect.startup();
filteringSelect.watch('displayedValue',函数(属性、旧值、新值){
警报(属性+':'+新值);
});
});

dijit/form/FilteringSelect
作为一个奇怪的API。当用户在文本框中键入某个内容时,当您在为自动完成而打开的列表中选择某个内容时,会触发
onChange
,但当您从使用“打开”下拉按钮选择列表中的某个内容时,则不会触发

对于一致的事件,您可以查看属性
displayedValue

require([“dijit/form/FilteringSelect”,“dojo/store/Memory”,“dojo/dom”,“dojo/on”,“dojo/domReady!”),
函数(FilteringSelect、内存、dom、on){
var filteringSelect=新filteringSelect({
id:“缩放”,
名称:“缩放”,
值:“z”,
中间变化:是的,
存储:新内存({
数据:[{
名称:“缩放”,
值:“z”
}, {
名称:“50%”,
值:“.5”
}, {
姓名:“75%”,
值:“.75”
}, {
名称:“100%”,
值:“1”
}, {
名称:“125%”,
值:“1.25”
}, {
名称:“150%”,
价值:“1.5”
}, {
名称:“175%”,
值:“1.75”
}, {
名称:“200%”,
值:“2”
}]
}),
searchAttr:“名称”
}“zoomDiv”);
filteringSelect.startup();
filteringSelect.watch('displayedValue',函数(属性、旧值、新值){
警报(属性+':'+新值);
});
});


我尝试了一下你的代码。我发现您需要将
filteringSelect
的创建和它的
启动分开。如果它们是分开的,则可以正常工作(尽管由于明显的原因,
值始终未定义)。虽然我不知道是什么原因导致DOJO网站上的示例出现这种情况,但它们只出现在一条语句中。我发现您需要将
filteringSelect
的创建和它的
启动分开。如果它们是分开的,则可以正常工作(尽管由于明显的原因,
值始终未定义)。虽然我不知道是什么原因导致DOJO站点上的示例中出现了相同的情况,但它们都在一条语句中。