聚焦事件未在道场 dijit 上触发 过滤选择



我有一个包含 7 个 dijit 过滤选择小部件的页面,如果用户单击小部件或小部件获得焦点,我想将其连接到从服务器获取的存储。 我希望事件触发一次。

如果我将onfocus="loadDropDown(this)"添加到我的标记中,则每次小部件获得焦点时都会执行,正如您所期望的那样。

我正在尝试使用 dojo 使用 on.once() 触发事件一次。 使用 dojo 事件处理的函数正在运行,但在小部件获得焦点时永远不会调用事件处理程序函数。

有什么指示吗?

这是我的标记

<select data-dojo-type="dijit.form.FilteringSelect"
                        type="text" intermediateChanges="false"
                        data-dojo-props="required:false, pageSize:20, placeholder: '---'"
                        scrollOnFocus="true" name="CJ1lxA" style="width: 40em;"
                        id="searchAgency">
                    </select>

这是为了注册事件

function registerDDLoad(){
require(["dojo/on", "dijit", "dojo/ready"], function(on, dijit, ready){
    ready(function(){
        var dropDown = dijit.byId("searchAgency");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchLocation");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchCounty");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchRep");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchSenate");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchStatus");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
        dropDown = dijit.byId("searchAE");
        on.once(dropDown, "onfocus", function() {
            loadDropDown(dropDown);
        });
    });
});
}
registerDDLoad();

dojo 事件类 dojo/on 期望指定事件时不带 'on':

onFocus = focus
onClick = click
onMouseOut = mouseout
...

我认为改变它应该可以解决你的问题。 我已经将您的代码复制到 jsFiddle 上的测试区域,因此您可以使用它。

注意:由于您正在重用下拉变量,因此它将始终等于最后一个过滤选择(id=searchAE),而不是以前的过滤。

相关内容

  • 没有找到相关文章

最新更新