onChange不足以从Dojo组合框触发查询
onChange not sufficient to trigger query from Dojo Combobox
这与本文密切相关:对于HTML<选择>?
但特别适用于Dojo组合框。。(我使用的是Dojo w/ArcGIS JSAPI)。我有三个组合框,它们使用由下拉列表中的选择触发的查询来填充继任者。我的问题是,如果第二个组合框选择保持不变,则不会触发查询。我尝试过使用onblur和其他几个事件来代替onchange,并尝试在JS中重置选择的值,但都不起作用。该值被重置,但组合框仍然表现为存在相同的值,因此onchange不起作用。我尝试了上面链接中的许多方法,但都不适用。据我所知,我的组合框不会生成任何selectedIndex。有什么建议吗?谢谢,J
所有三个dijit dijit/form/Select
、dijit/form/FilteringSelect
和dijit/form/ComboBox
的子类dijit/_HasDropDown
,并为它们添加属性dropDown
:
// dropDown: [protected] Widget
// The widget to display as a popup. This widget *must* be
// defined before the startup function is called.
dropDown: null
您想要的是收听这个dropDown
小部件。问题是,在ComboBox
和FilteringSelect
的情况下,这个小部件dijit/form/_ComboBoxMenu
会延迟实例化,即当您第一次打开弹出窗口时。因此,您需要首先挂接打开dropDown,然后将onClick
事件侦听器添加到dropDown:
var signal = aspect.after(comboBox, "openDropDown", function() {
comboBox.dropDown.on("click", function(node) {
console.log("value:", comboBox.get("value"));
console.log("selectedIndex:", domAttr.get(node, "item")); // <= this is not an identifier
}
signal.remove(); // remove aspect so it called only once
}
使用dijit/form/Select
时会更容易一些,因为dropDown
存在,并且您可以在其下拉列表dijit/Menu
上立即收听onExecute
:
select.dropDown.on("execute", function() {
setTimeout(function() {
console.log("value:", select.get("value"))
});
});
在jsFiddle上查看这三个方面的操作:http://jsfiddle.net/phusick/Hp5jr/
相关文章:
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- j查询utc offSets的时差
- 根据id将json数组组合为一个json数组
- 接受不在列表中的值-引导组合框
- 如何有效地将游戏数据存储在URL查询字符串中
- 如何处理node.js节点mongodb中的连接和查询队列
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何从 HTML 查询中删除项目
- onChange不足以从Dojo组合框触发查询
- 解析.查询和组合问题
- 在谷歌融合中组合 2 个查询
- 在 Firebase 查询中组合 orderByChild 和 equalTo
- 使用组合框填充另一个组合框,以便用户可以运行查询
- 尝试使用parse.com-javascript中一个查询的结果与新查询的结果组合
- 从查询组合集合插入一个新文档
- Cloudcode -使用AND组合两个OR查询
- php、javascript和mysql如何连接到一个组合,如果点击,则通过另一个查询进入另一个组合
- 组合带有FetchXML条件的retrievmultiple查询
- 组合两个mongo查询的输出
- 查询模式:'本地'在使用组合框和本地商店时可选