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']);
}
}
}
]
}
});
答案 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']);
}
}
})