Sencha ExtJS Grid textareafield不接受新线路

时间:2014-10-14 14:34:53

标签: extjs sencha-architect

RowEditor网格插件捕获输入键作为其处理的一部分,但我希望我的用户能够编辑" textarea"领域。当他们按下#34;输入"要输入换行符,RowEditor认为他们想要执行更新。

建议可能的解决方案如下所示:

listeners: {
afterrender: function() {
    this.inputEl.swallowEvent([
        'keypress',
        'keydown'
    ]);
}

}

当我尝试使用此代码时,我得到了' inputEl'是不明确的。我也尝试过:

var el = Ext.get("txtTest");
el.inputEl.swallowEvent([
        'keypress',
        'keydown'
    ]);

然而我收到同样的错误。我猜测textarea渲染后这个swallowEvent的关键在于但我不知道如何实现它。

这是我的代码:

var newGrid = Ext.create('Ext.grid.Panel', {
            renderTo : Ext.getBody(),
            title    : 'Grid',
            width    : 1000,
            height   : 300,
            plugins  : [rowEditing],
            tbar: [{
                    text: 'New Entry',
                    iconCls: 'employee-add',
                    height: 40,
                    width: 115,
                    handler : function() { addNewRow(newGrid); }
                }],
            store    : store,
            columns: 
            {                       
                items: 
                [

                    { id: 'txtTest', itemId: 'txtTest', text: 'Activity', dataIndex: 'Activity', editor: 'textareafield', grow: true, growMax: 300, listeners: 
                        {
                            afterrender: function() 
                            {
                                alert(this.inputEl);

                                //this.inputEl.swallowEvent(['keypress','keydown']);
                            }
                        } 
                    }
                ]
            }
        });

1 个答案:

答案 0 :(得分:0)

从默认文件中获取自己的textareafield将起作用:

Ext.define('EditorTextArea',{
    extend:'Ext.form.field.TextArea',
    xtype:'editortextarea',
    listeners:{
        afterrender:function(textareafield){
            textareafield.inputEl.swallowEvent(['keypress','keydown']);
        }
    }
})

然后editor:'editortextarea'

或者你可以尝试:

editor: Ext.create('Ext.form.field.TextArea', {
    listeners: {
        afterrender: function(textareafield) {
            textareafield.inputEl.swallowEvent(['keypress', 'keydown']);
        }
    }
})