ユーザーがウィジェットをクリックした場合、またはウィジェットがフォーカスを取得した場合にサーバーからフェッチされたストアに接続したい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();