ExtJS добавляет FormPanel глобального слушателя или решение - PullRequest
0 голосов
/ 28 сентября 2010

Я использую ExtJS 3.0, и я хотел бы расширить FormPanel или любое решение, чтобы каждый раз, когда я показываю форму, первое поле было сфокусировано.Я думал о добавлении глобального слушателя (если таковой существует), например:

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

Можно ли это сделать?У меня более 40 форм, и я не хочу добавлять каждого слушателя, я бы хотел, чтобы каждый слушатель автоматически получал его.

Спасибо.

1 Ответ

1 голос
/ 28 сентября 2010

Создайте файл 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 вам нужно будет убедиться, что вы обновляете функциональность по умолчанию в переопределении.

...