仅在显示窗口时处理单击

时间:2015-01-26 12:59:20

标签: button extjs keymapping

我点击按钮,点击" ENTER"在键盘上,但我想要只在显示窗口时处理点击(' MyDesktop.Books')。但当我显示窗口,然后关闭它,当我点击"输入" ,窗口(' MyDesktop.Books')再次显示。

怎么做:处理点击" ENTER"仅在显示窗口时在键盘上 代码:

Ext.define('MyDesktop.Books', {
extend: 'MyDesktop.BaseWindow',
id: 'books-win',
title: 'Book',
width: 700,
height: 400,
iconCls: 'small',
layout: 'fit',
items: [
    {
        xtype: 'bookwrap',
        listeners: {
            afterrender: function() {
                var mapEnterNew = new Ext.KeyMap(document, {
                    key: 13,
                    fn: function(e) {
                        Ext.ComponentQuery.query('bookwrap button[name=createbook]')[0].getEl().dom.click();
                    }
                });

            }
        }
    }
],

});

1 个答案:

答案 0 :(得分:1)

我认为您应该只在需要显示时初始化窗口并在之后删除,或者在字段/表单focus中附加事件并在blur上将其删除。

如果我知道xtype: "bookwrap"是什么,我可以给出一个更好的答案/例子。

你不应该真的需要使用getEl().dom.click(),ExtJs可以使用内置组件来处理所有表单提交需求,你可以在控制器中使用refs来获得对按钮的引用。< / p>

此代码在渲染时附加关键事件处理,并在关闭/隐藏窗口时再次将其删除:

还有Fiddle

Ext.application({
    name: 'Fiddle',

    launch: function() {
        Ext.define('Books', {
            extend: 'Ext.window.Window',
            id: 'books-win',
            title: 'Book',
            width: 700,
            height: 400,
            iconCls: 'small',
            layout: 'fit',
            items: [{
                xtype: 'panel',
                html: 'test'
            }],
            listeners: {
                beforehide: function() {
                    this.mapEnterNew.destroy();
                },
                afterrender: function() {
                    this.mapEnterNew = new Ext.KeyMap(document, {
                        key: 13,
                        fn: function(e) {
                            console.log(e);
                            Ext.ComponentQuery.query('bookwrap button[name=createbook]')[0].getEl().dom.click();
                        }
                    });
                }
            }
        });

        Ext.create('Books').show();
    }
});
相关问题