我正在使用ExtJS 3.0,我想扩展FormPanel或任何解决方案,以便每当我显示一个表单时,第一个字段应该得到焦点。我想要添加一个像这样的全局监听器(如果存在):
afterrender: function() {
Ext.getCmp('formAddProgPaymentDoc').findByType('textfield')[0].focus(); //// Get the first textfield and focus it
}
可以这样做吗?我有40多个表单,我不想为每个表单添加一个监听器,我希望每个表单自动获取它。
感谢。
答案 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的新版本时,您需要验证是否更新了覆盖中的默认功能。