我试图声明一个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");});
});
});发布于 2013-03-26 03:22:20
在您的声明性示例中,您使用的是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调用registry.byId("searchBox_input") (在您的代码示例中)。也许您应该将id密钥添加到data-dojo-props中,或者作为<input>节点上的一个属性。
https://stackoverflow.com/questions/15617976
复制相似问题