onfocus事件没有在dojo dijit FilteringSelect上触发

时间:2012-11-16 02:07:06

标签: dojo event-handling dijit.form

我有一个包含7个dijit FilteringSelect小部件的页面,如果用户点击小部件或小部件获得焦点,我想连接到从服务器获取的商店。我希望活动能够开一次。

如果我将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();

1 个答案:

答案 0 :(得分:1)

dojo事件类dojo/on期望在没有'on'的情况下指定事件:

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

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

注意:由于您正在重新使用下拉变量,因此它将始终等于最后一个filteringSelect(id = searchAE),而不是之前的那些。