我试图在用户在Ext.form.field.HtmlEditor(xtype:'htmleditor')中输入文本时按ctrl + enter发出Ajax请求,但我不知道该怎么做。
我在“ htmleditor”旁边没有按钮,它可以发送“ htmleditor”的值,但是我想使用ctrl + enter添加该操作的键盘快捷键。
将不胜感激。
编辑:它需要用ExtJS4制作-我必须以某种方式向我的htmleditor对象添加类似“ keypress”监听器的东西...
这是代码。
this.htmleditor = this.addComment.add({
region:'center',
xtype:'htmleditor',
margin:'0 0 0 0',
enableSourceEdit:false,
height:200
});
最佳答案
您无法在默认的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!');
}
}
});
关于javascript - 用户在Ext.form.field.HtmlEditor中键入文本时,按Ctrl + Enter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6663730/