HTMLEditor将光标聚焦在textarea中

时间:2016-03-02 09:55:58

标签: javascript extjs extjs5

我有一个简单的面板,里面有HTML编辑器。

我只想将光标聚焦在组件的textarea中 我试图将它集中在afterrender上,将组件设置为默认焦点,但我无法使其工作。

这是我的代码,我该怎么办?是否有可能将此textarea设置为焦点?

Ext.define('MyApp.view.MyViewport', {
    extend: 'Ext.container.Viewport',
    alias: 'widget.myviewport',

    requires: [
        'MyApp.view.MyViewportViewModel',
        'Ext.panel.Panel',
        'Ext.form.field.HtmlEditor'
    ],

    viewModel: {
        type: 'myviewport'
    },
    layout: 'fit',

    items: [
        {
            xtype: 'panel',
            layout: 'fit',
            title: 'My Panel',
            items: [
                {
                    xtype: 'htmleditor',
                    height: 150,
                    id: 'myEditor',
                    fieldLabel: 'Label'
                }
            ]
        }
    ]

});

也尝试了这个

{
   xtype: 'htmleditor',
   height: 150,
   id: 'myEditor',
   fieldLabel: 'Label',
   listeners: {
       afterrender: 'onMyEditorAfterRender'
   }
}



Ext.define('MyApp.view.MyViewportViewController', {
    extend: 'Ext.app.ViewController',
    alias: 'controller.myviewport',

    onMyEditorAfterRender: function(component, eOpts) {
        component.focus();
    }

});

问题似乎在我正在使用的浏览器上,第二个代码适用于Firefox,但不适用于chrome和edge

1 个答案:

答案 0 :(得分:1)

Afterrender事件可以使它

Ext.define('MyApp.view.MyViewport', {
    extend: 'Ext.container.Viewport',
    alias: 'widget.myviewport',

    requires: [
        'MyApp.view.MyViewportViewModel',
        'Ext.panel.Panel',
        'Ext.form.field.HtmlEditor'
    ],

    viewModel: {
        type: 'myviewport'
    },
    layout: 'fit',

    items: [
        {
            xtype: 'panel',
            layout: 'fit',
            title: 'My Panel',
            items: [
                {
                    xtype: 'htmleditor',
                    height: 150,
                    id: 'myEditor',
                    fieldLabel: 'Label',
                    listeners: {
                        afterrender: {
                            fn: function(component) {
                                component.focus();
                            }
                        }
                }
                }
            ]
        }
    ]

});