我想知道当按钮在extjs中失去焦点/模糊时触发/调用的事件/方法。
我有一个带菜单的按钮。当我点击按钮或菜单项以外的任何地方时,菜单将关闭。所以我想知道的是调用menu.hide()方法以便菜单隐藏。
有没有人对此有任何想法?我尝试使用Blur for button但它没有被解雇。
答案 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 - 按钮事件menushow
,menutriggerout
,menutriggerover
和mouseout
也可能有用。
答案 2 :(得分:0)
感谢@mankz。只需覆盖onMouseDown()
中的Ext.menu.MenuMgr
功能即可。尽管如此,我还是要重新定义Ext.menu.MenuMgr
。