我试图在用户在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/

10-11 06:06