gpt4 book ai didi

javascript - onChange 不足以触发 Dojo Combobox 的查询

转载 作者:行者123 更新时间:2023-12-02 19:22:27 24 4
gpt4 key购买 nike

这与这篇文章密切相关: Is there an onSelect event or equivalent for HTML <select>?

...但专门用于 Dojo ComboBox..(我正在使用 Dojo w/ArcGIS JSAPI)。我有三个组合框,它们使用下拉列表中的选择触发的查询来填充后继者。我的问题是,如果第二个组合框选择保持不变,则不会触发查询。我尝试过使用 onblur 和其他几个事件来代替 onchange,并尝试在 JS 中重置选择的值,但都不起作用。该值已重置,但组合框仍然表现得好像存在相同的值,因此 onchange 不起作用。我尝试了上面链接中的许多方法,但没有一个对我有用。据我所知,我的组合框不会生成任何 selectedIndex。有什么建议么?谢谢,J

最佳答案

所有三个 dijit dijit/form/Select , dijit/form/FilteringSelectdijit/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被延迟实例化,即当您第一次打开弹出窗口时。因此,您需要首先 Hook 打开下拉菜单,然后添加 onClick下拉事件监听器:

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存在,您可以收听 onExecute在其下拉菜单中 dijit/Menu立即:

select.dropDown.on("execute", function() {
setTimeout(function() {
console.log("value:", select.get("value"))
});
});

在 jsFiddle 上查看所有三个操作:http://jsfiddle.net/phusick/Hp5jr/

关于javascript - onChange 不足以触发 Dojo Combobox 的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12376192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com