简单的按键不会触发任何监听器
Posted
技术标签:
【中文标题】简单的按键不会触发任何监听器【英文标题】:simple keypress doesn't fire any listener 【发布时间】:2014-01-01 08:44:34 【问题描述】:一个简单的煎茶新手问题,让我困惑了一段时间。我正在尝试在按键上触发事件。我希望将事件绑定在 TextField 上。我创建了一个小提琴
http://jsfiddle.net/CjyFt/1/
initComponent: function()
this.on('click', function()
console.log('Clicked'); // doesn't fire either
);
如果担心的话,我已经分别尝试过它们......
...
enableKeyEvents: true,
listeners :
scope: this,
'keypress' : function(textfield, e)
console.log('lovely'); // doesn't fire
...
我已经尝试将侦听器放置在每个父类中,并且我尝试绑定不同的事件而没有任何一个起作用,有人可以看看它是否很明显吗?
【问题讨论】:
【参考方案1】:keypress 事件(以及相关的配置选项enableKeyEvents
)在Ext.form.field.Text
中定义,但是您正在从Ext.form.field.Base
扩展您的类Ext.form.CustomField
,这是Ext.form.field.Text
的父类因此没有这个事件(见class hierarchy)。
我已经更新了你的小提琴,它工作正常:http://jsfiddle.net/CjyFt/2/
我刚刚改了这个:
Ext.define('Ext.form.CustomField',
extend: 'Ext.form.field.Text', // instead of Ext.form.field.Base
...
按钮上的点击事件已经为我工作了,所以我认为这没有问题。
【讨论】:
啊!谢谢,现在我知道为什么它不起作用了,这很有意义。在我的辩护中,我应该如何知道enableKeyEvents
的定义位置? :(
您可以在docs 中看到它。在每个属性、函数或事件的右侧,显示定义它的类。另外,在Ext.form.field.Base 你不会找到这个配置。以上是关于简单的按键不会触发任何监听器的主要内容,如果未能解决你的问题,请参考以下文章
WINFORM中用DSOFramer打开word,如何监听Ctrl+P按键事件?