在刚刚创建的窗口中设置文本输入的焦点

Set focus for text input in just created window

本文关键字:输入 置文本 焦点 窗口 创建      更新时间:2023-09-26

我有一个微不足道的窗口:

   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'
    });

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

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

我错过了什么?我应该绑定到什么事件才能呈现所有元素并能够接受焦点?

PS:如果我在 10ms 等小间隔后调用相同的.focus() - 我会让它集中,但这不是解决方案

查看activeItem属性 - http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Panel-cfg-activeItem

或者您也可以使用 defaultFocus : http://docs.sencha.com/ext-js/4-0/#!/api/Ext.window.Window-cfg-defaultFocus