Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS添加FormPanel全局侦听器或解决方案_Extjs_Listener_Formpanel - Fatal编程技术网

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

ExtJS添加FormPanel全局侦听器或解决方案,extjs,listener,formpanel,Extjs,Listener,Formpanel,我使用的是ExtJS3.0,我想扩展FormPanel或任何解决方案,以便每次显示表单时,第一个字段都应该获得焦点。我正在考虑添加一个全局侦听器(如果存在这样的侦听器),可能如下所示: afterrender: function() { Ext.getCmp('formAddProgPaymentDoc').findByType('textfield')[0].focus(); //// Get the first textfield and focus it } 这能做到吗?我有40多个表单

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

afterrender: function() {
Ext.getCmp('formAddProgPaymentDoc').findByType('textfield')[0].focus(); //// Get the first textfield and focus it
}
这能做到吗?我有40多个表单,我不想为每个表单添加一个侦听器,我想为每个表单自动获取它的侦听器


谢谢。

创建一个exforverrides.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
    }
})

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

感谢您的回复,我完成了这一部分,我有了侦听器,但我不知道如何以及在何处扩展。有什么想法吗?请注意,在重复使用对话框窗口(使用隐藏/显示)的情况下,只有在第一次显示对话框时才会调用窗口的FormPanel的onRender函数。在这种情况下,需要基于窗口的“显示”事件的解决方案。