ExtJS添加FormPanel全局侦听器或解决方案

时间:2010-09-28 16:35:52

标签: extjs listener formpanel

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

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

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

感谢。

1 个答案:

答案 0 :(得分: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的新版本时,您需要验证是否更新了覆盖中的默认功能。