我有以下内容:
xtype: 'gridpanel',
id: 'myGridPanel',
columns: [...],
store: myStore,
listeners: {
select: function(){
Ext.getCmp('myTextArea').focus();
console.log('Text area has focus here');
}
}
myTextArea
在我调用.focus()
后立即关注,但当我的程序执行离开select函数时,它会失去焦点。我认为问题在于,在调用select侦听器并且执行正在改变焦点之后会发生程序执行。如何防止冒泡事件改变焦点?
答案 0 :(得分:1)
在以图形方式突出显示行之前,select
事件将触发。我认为当焦点被设置为其他东西(所选行)时,就像在Ext.js代码中发生的那样。
你有不同的选择可以尝试(现在没有尝试过,只记得从记忆中回忆):
使用beforeselect
事件并返回false
,然后基础选择将被取消。这仅适用于您不需要实际行选择的情况。这相当于按照您的要求停止事件冒泡。
使用超时,例如{焦点Ext.util.DelayedTask
并在将焦点设置到textarea之前等待几毫秒。在这种情况下,您将保留基础行选择。这可能是您的最佳选择。
使用selectionchange
事件进行游戏。它可能在时间上有所不同。