您无法在默认 htmleditor 中侦听事件。所以你需要使用它的更新版本。
此代码可以帮助您(它适用于 extjs 3,因此您可能需要将其更改为 4 版本):
Cyber.ui.HtmlEditor = Ext.extend(Ext.form.HtmlEditor, {
frame : true,
initComponent : function() {
Cyber.ui.HtmlEditor.superclass.initComponent.call(this);
this.addEvents('submit');
},
initEditor : function() {
Cyber.ui.HtmlEditor.superclass.initEditor.call(this);
if (Ext.isGecko) {
Ext.EventManager.on(this.doc, 'keypress', this.fireSubmit,
this);
}
if (Ext.isIE || Ext.isWebKit || Ext.isOpera) {
Ext.EventManager.on(this.doc, 'keydown', this.fireSubmit,
this);
}
},
fireSubmit : function(e) {
if (e.ctrlKey && Ext.EventObject.ENTER == e.getKey()) {
// Do what you need here
}
}
});
Ext.reg('customeditor', Cyber.ui.HtmlEditor);
并以您的形式:
this.htmleditor = this.addComment.add({
region:'center',
xtype:'customeditor',
margin:'0 0 0 0',
enableSourceEdit:false,
height:200
});
我用 Extjs 4 玩了很多,并找到了方法(在使用 htmleditor 之前你只需要包含这个代码):
Ext.form.HtmlEditor.override({
frame : true,
initComponent: function() {
this.callOverridden();
this.addEvents('submit');
},
initEditor : function() {
this.callOverridden();
var me = this;
var doc = me.getDoc();
if (Ext.isGecko) {
Ext.EventManager.on(doc, 'keypress', me.fireSubmit, me);
}
if (Ext.isIE || Ext.isWebKit || Ext.isOpera) {
Ext.EventManager.on(doc, 'keydown', me.fireSubmit, me);
}
},
fireSubmit : function(e) {
if (e.ctrlKey && Ext.EventObject.ENTER == e.getKey()) {
// Do what you need here
alert('yes!');
}
}
});