1

を宣言しようとしていますが、イベントをdijit TextBox添付できません。focus

私は宣言的にそうしようとしました:

<div class="midArea_div">
 <div class="searchBox_div">
   <input type="text" data-dojo-name="searchBox_input" data-dojo-type="dijit.form.TextBox" data-dojo-props="placeHolder:'Search...'"class="searchBox"></input>
    <script type="dojo/on" data-dojo-event="onFocus" data-dojo-args="evt">
         alert("hi");
   </script>
 <div class="searchIcon_overlay"></div>
 </div>
</div>

そしてまたプログラム的に。http://jsfiddle.net/YyFw5/

js:

require([
  "dijit/dijit",
  "dojo/parser",
  "maqetta/space",
  "maqetta/AppStates",
  "dijit/layout/BorderContainer",
  "dijit/layout/ContentPane",
  "dijit/form/TextBox",
  "dojo/on"
]);
require(["dojo/ready", "dojo/dom", "dojo/_base/fx", "dojo/on", "dijit/registry"], function(ready, dom, base_fx, on, registry){
     ready(function(){
         // logic that requires that Dojo is fully initialized should go here
        //on(registry.byId("searchBox_input"), "focus", function(a){alert("hi");});
     });
});
4

1 に答える 1

1

宣言型の例dojo/onでは、ネイティブDOMイベントの独自の正規化を実行するモジュールを使用しています。コールバックはonFocusDijitウィジェットコンストラクト(ソースを確認する場合は_FormMixinを介して_WidgetBaseにミックスされます)であり、ウィジェットまたはウィジェット内のウィジェットがフォーカスされているかクリックされたためにウィジェットが「アクティブ」になったときに使用されます。

次のように、正規化されたイベント名をイベントハンドラーで使用します。

<script type="dojo/on" data-dojo-event="focus" data-dojo-args="evt">
     alert("hi");
</script>

(コード例から)存在しないIDで呼び出していることを除いて、プログラムの例に明らかに問題はありません。registry.byId("searchBox_input")おそらく、ノードにidキーを追加するdata-dojo-propsか、ノードの属性としてキーを追加する必要があり<input>ます。

于 2013-03-25T19:22:20.170 に答える