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

发布于 2024-09-24 23:12:49 字数 333 浏览 4 评论 0原文

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

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

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

谢谢。

I'm using ExtJS 3.0 and I would like to extend FormPanel or any solution so that everytime I show a form, the first field should get focus. I was thinking of adding a global listener (if such exists) like this perhaps:

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

Can this be done ? I have more than 40 forms and I don't want to add each one a listener, I would like to get it's listener automatically for each one.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我很OK 2024-10-01 23:12:49

创建一个 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 时,您将需要验证是否更新了覆盖中的默认功能。

Create an ExtOverrides.js file which will modify base functionality of Ext. And add the following code:

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
    }
})

You need to be careful when using ExtOverrides though - when you update to new versions of Ext you will need to verify that you update the default functionality in the override.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文