【问题标题】:Set focus for text input in just created window在刚刚创建的窗口中为文本输入设置焦点
【发布时间】:2012-06-19 00:19:22
【问题描述】:

我有一个简单的窗口:

   this.window = Ext.widget('window', {
            title: 'Find',
            closeAction: 'hide',
            width: 300,
            layout: 'fit',
            items: form
        });

里面有简单的形式

var form = Ext.widget('form', {
    layout: {
        type: 'vbox',
        align: 'stretch'
    },
    border: false,
    bodyPadding: 10,

    items: [
        this.findInput,
    ]
});

只有一项

    this.findInput = Ext.widget('textfield', {
        name: 'find'
    });

问题是:如何在窗口显示后立即设置焦点?我试图在几乎每个窗口事件处理程序中调用this.findInput.focus() 方法,但没有成功。

似乎在 DOM 完全创建所有元素之前,甚至 afterrender 都被同步调用了。

我错过了什么?我应该绑定什么事件来渲染所有元素并能够接受焦点?

PS:如果我在 10 毫秒这样的小间隔后调用相同的 .focus() - 我会集中注意力,但这不是解决方案

【问题讨论】:

标签: javascript extjs extjs4 extjs4.1


【解决方案1】:

【讨论】:

  • 不幸的是,它不适用于vbox 布局。至少在将activeItem: 0 添加到窗体和窗口之后 - 没有任何改变。而在 extjs 源代码中,我只能在 card 布局中看到它
  • 是的,defaultFocus 就是我要找的。请把它作为答案
猜你喜欢
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 2011-07-07
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多