0

ユーザーがウィジェットをクリックした場合、またはウィジェットがフォーカスを取得した場合にサーバーからフェッチされたストアに接続したい7つのdijitFilteringSelectウィジェットを含むページがあります。イベントを1回発生させたい。

onfocus = "loadDropDown(this)"をマークアップに追加すると、予想どおり、ウィジェットがフォーカスを取得するたびに実行されます。

on.once()を使用して、dojoを使用してイベントを1回発生させようとしています。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();
4

1 に答える 1

1

dojoイベントクラスdojo/onは、イベントが「on」なしで指定されることを想定しています。

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

それを変えることであなたの問題は解決すると思います。コードをjsFiddleのテスト領域にコピーしたので、試してみることができます。

注意:ドロップダウン変数を再利用しているため、常に最後のfilteringSelect(id = searchAE)と等しくなり、以前のものとは等しくなりません。

于 2012-11-16T06:57:35.583 に答える