您無法偵聽默認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!');
}
}
});
謝謝,它「摧毀」htmleditor的一些部分......並且當我按下ctrl + enter時它會凍結(警惕()),所以我認爲這可能會有所幫助,但我從未使用過extjs3我對extjs4很新,所以你可以幫我轉換嗎? – T1000
@ T1000 - 我已經更新了我的答案,因此您可以嘗試extjs4的正確版本。 – Andron
非常感謝Andron。 +1 – T1000