【问题标题】:Why are my key events not working为什么我的关键事件不起作用
【发布时间】:2016-11-08 13:21:05
【问题描述】:

为什么我的关键事件在以下示例中不起作用? 'blur' 事件有效,但我的文本字段上没有任何关键事件有效(我也尝试过 'keydown')。

我也尝试在控制器上使用“控制”结构,但这也不起作用。

Ext.define('Plus.view.MyController', {
    extend: 'Ext.app.ViewController',

    alias: 'controller.mycontroller',
    control: {
        '#mytextfield': {
            blur: function() {
                alert("oink")
            },
            keypress: function() {
                alert("moo")
            },
            keyup: function() {
                alert("quack")
            }
        }
    }
});

Ext.define('Plus.view.MainView', {
    extend: 'Ext.container.Container',

    items: [{
        xtype: 'textfield',
        id: 'mytextfield',
        controller: 'mycontroller',
        listeners: {
            blur: function() {
                alert("oink 2")
            },
            keypress : function() {
                alert("moo 2")
            },
            keyup : function() {
                alert("quack 2")
            }
        }
    }]
});

Ext.application({
    name: 'Plus',
    autoCreateViewport: 'MainView',
    launch: function() {

    }
});

我的小提琴在这里:

https://fiddle.sencha.com/#fiddle/1d5d

我是否遗漏了一些明显的东西?

【问题讨论】:

    标签: extjs extjs6


    【解决方案1】:

    keypresskeyup 这些事件仅在 enableKeyEvents 设置为 true 时触发。 设置这个,你的代码就可以工作了。我在代码工作的地方为你创建了一个提琴手。 Fiddle

    【讨论】:

    • 所以默认情况下,没有关键事件在 extJS 中起作用? ...为什么? ...这看起来很奇怪。
    • ya 在文档中,他们提到所有三个关键事件只有在设置为 true 后才会触发。是的,它很奇怪。你可以向sencha报告。
    • 我猜可能是出于性能原因,他们默认将其关闭。
    • 默认情况下,您只能捕获特殊键事件,而不是所有“其他”键。我猜这是为了防止事件处理程序中的大量开销。除了 specialkey 之外,我几乎从不使用其他关键事件
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多