选择下拉列表中的Dojo 1.10 ON事件不起作用

时间:2014-07-15 17:44:44

标签: dojo

我有以下选择下拉列表:

    <div data-dojo-type="dijit/layout/ContentPane" id="legendPane" data-doprops="title:'Monuments', selected:true" >
        <select id="selSection" data-dojo-type="dijit/form/Select">
          <option value="0">Section</option>
          <option value="1">Gulf of Maine</option>   
          <option value="2">Passamaquoddy Bay</option>
          <option value="3">St. Croix River</option>
          <option value="4">North Line</option>
          <option value="5">St. John River</option>
          <option value="6">St. Francis River</option>
          <option value="25">The 49th Parallel, Columbia Valley to Pacific</option>
        </select>
      </div>

我有以下活动:

    var selSec = registry.byId("selSection");
    on(selSec, "Change", function(evt) {
     alert("test");
    }); 

但它似乎没有做任何事情。我哪里错了? 谢谢, GIDO

2 个答案:

答案 0 :(得分:0)

看看这些前SO-Post。它处理与您面临的完全相同的Prob。

How do I programmatically change a select so that it fires its onchange behavior?

顺便问一下:你检查过你的selSec是否找到了合适的小部件吗?

此致,Miriam

答案 1 :(得分:0)

它在fiddle中运行正常,但建议不要使用dojo/on来捕获基于小部件的事件(例如来自onChange的{​​{1}} dijit/form/Select)。

捕获该事件的更推荐方法是使用dijit/form/Select::on()函数,例如:

registry.byId("selSection").on("change", function() {
    // Do something
});

回到您的问题,请确保您等待,直到使用dojo/ready模块解析页面上的小部件。

通过设置parseOnLoad: true,确保在DOM准备就绪时配置了dojo来解析小部件。最后,通过检查以下内容确保您的require()功能正确无误:

  • 加载的模块与require()回调
  • 中的变量的顺序相同
  • 您正在加载dijit/layout/ContentPanedijit/form/Select(即使使用声明性标记,它们也是必要的)
  • 您正在加载dojo/parser模块,这是解析DOM上的小部件所必需的。