我有以下选择下拉列表:
<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
答案 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/ContentPane
和dijit/form/Select
(即使使用声明性标记,它们也是必要的)dojo/parser
模块,这是解析DOM上的小部件所必需的。