ExtJS添加FormPanel全局侦听器或解决方案
我使用的是ExtJS3.0,我想扩展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多个表单
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函数。在这种情况下,需要基于窗口的“显示”事件的解决方案。