Extjs 文本字段的拼写检查

Spellcheck for Extjs textfields

我需要在 extjs 文本字段中进行拼写检查。 textarea 不起作用,因为我需要它只允许用户输入一行输入 - 没有回车键。有什么方法可以为文本字段启用拼写检查?

我找到了一种方法来绕过单行要求并使用默认使用拼写检查的文本区域。要强制文本区域成为单行,请将此添加到您的文本区域:

xtype: 'textarea',
grow: true,
growMax: 32,
enableKeyEvents: true,
listeneters: {
    keydown: 'disableNewLine'
}

然后在您的控制器中,添加禁用新行的功能。

disableNewLine: function(textarea, e, eOpt) {
    if(e.keyCode == 13) {
        e.stopEvent();
    }
}    

这可以防止用户像文本字段一样向其输入添加新行,但会使用拼写检查。此外,32 是文本字段的默认高度,因此看起来完全一样。仅设置高度不起作用,默认值似乎覆盖了它。

您可以在组件渲染完成后添加。 还要确保您使用的浏览器支持拼写检查。 http://caniuse.com/#search=spellcheck

{
    xtype: 'textfield',
    name: 'name',
    fieldLabel: 'Name',
    listeners: {
        afterrender: function(cmp) {
            cmp.getEl().set({
                "spellcheck": 'true'
            });
        }
    }
}

api

inputAttrTpl: 'autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"'

在safari下运行正常!

这个覆盖对我来说对 ExtJS6 很有效 & Chrome:

Ext.define('Ext.overrides.form.field.Text',{
    override: 'Ext.form.field.Base',
    /**
     * Ensure all text fields have spell check disabled
     */
    inputAttrTpl: [
        'spellcheck=false'
    ],
    constructor: function () {          

        this.callParent(arguments); 

    }
});