在ExtJS中,如何在组件中注入enableKeyEvents=true?

在ExtJS中,如何在组件中注入enableKeyEvents=true?,events,extjs,Events,Extjs,这是我的密码 myText.enableKeyEvents = true; // ** myText.on('keyup', function(t){ console.log(t.getValue()); }); 它不工作,我想它可能有一些调用方法。 有人有主意吗 完整代码 // function var txfJump = function(txf){ var next = txf.nextSibling(); if(next.xtype == 'textfield'){

这是我的密码

myText.enableKeyEvents = true; // **
myText.on('keyup', function(t){ console.log(t.getValue()); });
它不工作,我想它可能有一些调用方法。
有人有主意吗


完整代码

// function
var txfJump = function(txf){
    var next = txf.nextSibling();
    if(next.xtype == 'textfield'){
        txf.enableKeyEvents = true;
        txf.on('keyup', function(t, e){
            if(t.getValue().length == t.maxLength){
                next.focus();
            }
        });
        txfJump(next);
    }
};
// form
var p = new Ext.Panel({
    title   : 'test panel',
    width   : 400,
    defaults: {
        xtype : 'textfield',
    },
    items   : [
        { ref : 'one',  maxLength : 5 },
        { ref : 'two',  maxLength : 5 },
        { ref : 'three',maxLength : 5 },
        {
            xtype   : 'button',
            text    : 'SAMPLE'
        },
        { ref : 'four', maxLength : 5 },
    ],
    renderTo: Ext.getBody()
});

Ext.onReady(function(){
    txfJump(p.one);
});
获取新的Ext.form.TextField实例时,应传递“enableKeyEvents”:true。下面是使用示例

var textField = new Ext.form.TextField({ . // your configs . enableKeyEvents: true, . . }) var textField=new Ext.form.textField({ .//您的配置 . enableKeyEvents:true, . . })
没有黑客把戏是不可能的。阅读了
TextField
的源代码后,我发现有一个私有方法
initEvents
,当且仅当设置了
enableKeyEvents
时,该方法才为html元素设置回调。因此,在调用
initEvents
之后更改
enableKeyEvents
,在再次调用之前没有任何效果


要注入它,可以尝试触发组件的重新呈现,也可以复制
TextField
initEvent
的相关部分的行为。但是似乎没有正式的方法。

您必须调用
txf.initEvents()
,这需要在
txf.enableKeyEvents=true之后调用

var txfJump = function(txf){
var next = txf.nextSibling();
if(next.xtype == 'textfield'){
    txf.enableKeyEvents = true;
    txf.initEvents();            //<----- this is what you have missing
    txf.on('keyup', function(t, e){
        if(t.getValue().length == t.maxLength){
            next.focus();
        }
    });
    txfJump(next);
}
var txfJump=函数(txf){
var next=txf.nextSibling();
如果(next.xtype=='textfield'){
txf.enableKeyEvents=true;

txf.initEvents();//你能为你的代码提供一点更多的上下文吗?请粘贴其余的文本字段代码及其容器。如果你认为没有必要包含其他字段,你可以省略它们。我更新了我的完整代码,谢谢你的回复。现在我找到了一些操作来启用KeyEvent,这是mom()。这是我的代码=>txf.mon(txf.el,{scope:txf,keyup:txf.onKeyUp});我知道Fatih,但我想做注入函数,所以我无法设置组件配置。感谢keppla,似乎mon是通过该方法调用的。