将焦点设置为textarea后,如何防止冒泡事件?

时间:2014-07-07 19:19:34

标签: javascript extjs textarea event-bubbling

我有以下内容:

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侦听器并且执行正在改变焦点之后会发生程序执行。如何防止冒泡事件改变焦点?

1 个答案:

答案 0 :(得分:1)

在以图形方式突出显示行之前,select事件将触发。我认为当焦点被设置为其他东西(所选行)时,就像在Ext.js代码中发生的那样。

你有不同的选择可以尝试(现在没有尝试过,只记得从记忆中回忆):

  1. 使用beforeselect事件并返回false,然后基础选择将被取消。这仅适用于您不需要实际行选择的情况。这相当于按照您的要求停止事件冒泡。

  2. 使用超时,例如{焦点Ext.util.DelayedTask并在将焦点设置到textarea之前等待几毫秒。在这种情况下,您将保留基础行选择。这可能是您的最佳选择。

  3. 使用selectionchange事件进行游戏。它可能在时间上有所不同。