我正在尝试声明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/
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");});
});
});
答案 0 :(得分:1)
在声明性示例中,您使用的是dojo/on
模块,该模块执行自己的原生DOM事件规范化。 onFocus
回调是一个Dijit小部件构造(如果你想查看源代码,则通过_FormMixin混合到_WidgetBase中),当小部件变为“活动”时使用它,或者它内部的小部件具有焦点或已经点击。
您希望将normalized event name与事件处理程序一起使用,如下所示:
<script type="dojo/on" data-dojo-event="focus" data-dojo-args="evt">
alert("hi");
</script>
我的程序化示例中没有发现任何明显错误,只是您使用ID(来自您的代码示例)不存在的ID调用registry.byId("searchBox_input")
。也许您应该在id
或data-dojo-props
节点上添加<input>
密钥。