0

我正在使用 ExtJS 3.0,我想扩展 FormPanel 或任何解决方案,以便每次显示表单时,第一个字段都应该获得焦点。我正在考虑像这样添加一个全局监听器(如果存在的话):

afterrender: function() {
Ext.getCmp('formAddProgPaymentDoc').findByType('textfield')[0].focus(); //// Get the first textfield and focus it
}

这可以做到吗?我有 40 多个表单,我不想为每个表单添加一个侦听器,我想为每个表单自动获取它的侦听器。

谢谢。

4

1 回答 1

1

创建一个 ExtOverrides.js 文件,它将修改 Ext 的基本功能。并添加以下代码:

Ext.override(Ext.FormPanel, {
    onRender: function(ct, position){
        this.initFields();
        Ext.FormPanel.superclass.onRender.call(this, ct, position);
        this.form.initEl(this.body);

        //Begin edit of default functionality
        var firstFieldItem = this.getForm().items.first();
        if(firstFieldItem){
            //delay the focus for 500ms to make sure the field is visible
            firstFieldItem.focus(true,500);
        }
        //End edit of default functionality
    }
})

但是,在使用 ExtOverrides 时需要小心——当您更新到新版本的 Ext 时,您需要验证您是否更新了覆盖中的默认功能。

于 2010-09-28T17:00:06.570 回答