【问题标题】:HTMLEditor focus cursor inside textarea文本区域内的 HTMLEditor 焦点光标
【发布时间】:2016-03-02 09:55:58
【问题描述】:

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

我只想将光标聚焦在组件的文本区域内。
我试图将它集中在 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'
                }
            ]
        }
    ]

});

这个也试过了

{
   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 上无效

【问题讨论】:

    标签: javascript extjs extjs5


    【解决方案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();
                                }
                            }
                    }
                    }
                ]
            }
        ]
    
    });
    

    【讨论】:

    • 不行,component就是所有的组件,包括他的toolbar和input textarea。
    • 监听器在 htmleditor 上,所以在 afterrender 事件组件中将是 htmleditor。
    • 写到这里之前我已经测试过了。它正在工作。如果您想在面板的 afterrender 事件中使用它,请将 afterrender 函数中的逻辑替换为 component.down("htmleditor").focus()
    • 你使用的是什么版本的 extjs?我已经在您的尝试中添加了代码,但对我来说它不起作用
    • 它必须适用于任何版本。坚持1分钟。我也会为 extjs 5 尝试一下
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 2011-05-30
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多