extjs - 当按钮失去焦点时触发/调用的事件/方法是什么?

时间:2011-03-11 00:07:05

标签: extjs

我想知道当按钮在extjs中失去焦点/模糊时触发/调用的事件/方法。

我有一个带菜单的按钮。当我点击按钮或菜单项以外的任何地方时,菜单将关闭。所以我想知道的是调用menu.hide()方法以便菜单隐藏。

有没有人对此有任何想法?我尝试使用Blur for button但它没有被解雇。

3 个答案:

答案 0 :(得分:0)

/**
     * Try to focus this component.
     * @param {Boolean} selectText (optional) If applicable, true to also select the text in this component
     * @param {Boolean/Number} delay (optional) Delay the focus this number of milliseconds (true for 10 milliseconds)
     * @return {Ext.Component} this
     */
    focus : function(selectText, delay){
        if(delay){
            this.focusTask = new Ext.util.DelayedTask(this.focus, this, [selectText, false]);
            this.focusTask.delay(Ext.isNumber(delay) ? delay : 10);
            return this;
        }
        if(this.rendered && !this.isDestroyed){
            this.el.focus();
            if(selectText === true){
                this.el.dom.select();
            }
        }
        return this;
    },

    // private
    blur : function(){
        if(this.rendered){
            this.el.blur();
        }
        return this;
    },

有趣。显然,当Component获得焦点或失去它时,ExtJS不会引发任何事件。可能它应该被覆盖。

答案 1 :(得分:0)

ExtJS Button有一个名为menuhide的事件,用于此目的。当附加到按钮的菜单(假设有一个)被隐藏时,它会被触发。使用参数(Button this, Menu menu)调用该事件。

有关详细信息,请参阅ExtJS API documentation - 按钮事件menushowmenutriggeroutmenutriggerovermouseout也可能有用。

答案 2 :(得分:0)

感谢@mankz。只需覆盖onMouseDown()中的Ext.menu.MenuMgr功能即可。尽管如此,我还是要重新定义Ext.menu.MenuMgr