0

ExtJS 3.0 を使用しています。FormPanel または任意のソリューションを拡張して、フォームを表示するたびに最初のフィールドがフォーカスされるようにしたいと考えています。おそらく次のようなグローバルリスナー(存在する場合)を追加することを考えていました:

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

これはできますか?40 を超えるフォームがあり、それぞれにリスナーを追加したくありません。それぞれのリスナーを自動的に取得したいと考えています。

ありがとう。

4

1 に答える 1

1

Ext の基本機能を変更する ExtOverrides.js ファイルを作成します。そして、次のコードを追加します。

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 の新しいバージョンに更新するときは、オーバーライドのデフォルト機能を更新していることを確認する必要があります。

于 2010-09-28T17:00:06.570 に答える