在刚刚创建的窗口中为文本输入设置焦点
Posted
技术标签:
【中文标题】在刚刚创建的窗口中为文本输入设置焦点【英文标题】: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()
- 我会集中注意力,但这不是解决方案
【问题讨论】:
另见Set focus on Extjs textfield 【参考方案1】:查看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
【讨论】:
不幸的是,它不适用于vbox
布局。至少在将activeItem: 0
添加到窗体和窗口之后 - 没有任何改变。而在 extjs 源代码中,我只能在 card
布局中看到它
试试这个:docs.sencha.com/ext-js/4-0/#!/api/…
是的,defaultFocus
就是我要找的。请把它作为答案以上是关于在刚刚创建的窗口中为文本输入设置焦点的主要内容,如果未能解决你的问题,请参考以下文章