首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dijit声明性事件处理程序

dijit声明性事件处理程序
EN

Stack Overflow用户
提问于 2013-03-25 22:53:32
回答 1查看 732关注 0票数 1

我试图声明一个dijit TextBox,但我无法将focus事件附加到它。

我已经尝试过声明性地这样做:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
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");});
     });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-26 03:22:20

在您的声明性示例中,您使用的是dojo/on模块,该模块对本地DOM事件执行自己的规范化。onFocus回调是一种Dijit小部件构造(如果您想查看源代码,可以通过_FormMixin混合到_WidgetBase中),当小部件变得“活动”时使用,因为它或其中的小部件具有焦点或已被单击。

您希望将normalized event name与事件处理程序一起使用,如下所示:

代码语言:javascript
复制
<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>节点上的一个属性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15617976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档