首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在dijit.InlineEditBox中捕获击键吗?

在dijit.InlineEditBox中捕获击键吗?
EN

Stack Overflow用户
提问于 2014-04-02 21:56:12
回答 2查看 192关注 0票数 0

我有一个以dijit.InlineEditBox为编辑器的dijit.form.TextArea。我该如何捕捉击键?

我试过(inlineEditBox,"KeyPress",函数().)但这似乎只连接到InlineEditBox-小部件中的事件,而不是TextArea-小部件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-11 20:23:56

我认为,在较早版本的dojo (<1.6)中,您过去可以将onKeyPress函数传递给InlineEditBox的"editorParams“属性。但我认为在最近的版本中,这要么被删除,要么有一个bug使它无法工作。在最近版本的Dojo中,我在InlineEditBox的“InlineEditBox”中添加了一个侦听器。我做了这样的事:

代码语言:javascript
复制
on(eb.wrapperWidget.editWidget, "keypress", function (evt) {
    console.log("EVT:", evt);
});

其中eb是InlineEditBox。但是,直到第一次单击wrapperWidget时才创建InlineEditBox,因此我必须提供一种初始化wrapperWidget的方法。

代码语言:javascript
复制
eb.edit();
eb.cancel();

在最近版本的Dojo中,我可能还没有看到更好的方法,但这是一个可行的解决方案。为了提供帮助,我为这个示例创建了一个JSFiddle,http://jsfiddle.net/N5WPk/

票数 0
EN

Stack Overflow用户

发布于 2014-04-11 13:50:29

您正在使用on()函数连接到InlineEditBox。如果您想从文本区域捕获事件,那么在on()中引用该小部件。此外,我建议使用onKeyUp并获得以下值:

代码语言:javascript
复制
var textarea = new Textarea({
        name: "myarea",
        onKeyUp: function(event){
           // get the value and do something with it
        }
        style: "width:200px;"
    }, "myarea").startup();;
});

编辑:

实际上,dojo并不希望您能够这样做:)

主要问题是,直到第一次单击编辑器时,Textarea才会实例化,因此您必须连接到onBlur事件,然后才能获得对小部件的引用。然后,您可以访问textarea的ID,查找小部件,并创建到keyup事件的连接。为了防止过多的事件处理程序,您需要在每次编辑完成后销毁事件的句柄,然后在下次有人选择文本区域时再重新构建它。而且,我使用的是dijit.registry.byId,但是很明显,如果您使用的是amd加载程序,那么就不是这样做的。

这真的很恶心,但很管用:

代码语言:javascript
复制
 var editBox = registry.byId("editBox");

   var blurHandle = editBox.on("blur", function(value){
        console.info("only run once");
        var textArea = dijit.registry.byId(editBox._focusManager.activeStack[1]);
        var keyupHandle = textArea.on("keyUp", function(event){
            console.info("value: ", event.keyCode);
        });

        editBox.on("change", function(value){
          keyupHandle.remove();
        });

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

https://stackoverflow.com/questions/22823896

复制
相关文章

相似问题

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