防止ckeditor在按键上显示字符

时间:2012-11-23 09:24:14

标签: javascript ckeditor fckeditor

我有一个CKEditor 3.0实例'编辑器'及其key' event附加一个监听器,以便当该函数返回false时,它不应该在编辑器上键入该关键字符,即如果键是' k'按下它,如果函数返回false,它不应该显示在编辑器上

editor.on('key', function(e)
{
        alert(""+e.data.keyCode);
        return false;
});

我使用了上面的代码,但是它不起作用,意味着字符在编辑器上输入

尝试使用一个插件,在键盘代码65的按键上应该显示另一个语言字符,而不是英语字符。

CKEDITOR.plugins.add( 'typing',
    {
        init: function( editor )
        {

            editor.addCommand( 'insertcharacter',
            {
                exec : function( editor )
                {    

                 alert(editor.id);
                    alert(editor.name);
                    editor.on('key', function(e)
                    {
                        alert("Hello"+e.data.keyCode);

                        if(e.data.keyCode == 65)
                        {
                                editor.insertText('Other Language Character');
                        }
                        return false;

                     });
                }
    });
你建议我解决这个问题吗? 感谢

4 个答案:

答案 0 :(得分:2)

最近找到了答案。这对我来说是最新版本(4.x)。

editor.document.on('keypress', function(e) {
      e.data.preventDefault(); // this will prevent the default action for any event
      //your code goes here
});

答案 1 :(得分:1)

在v4中,您可以在按下相应的键时使用editor.on('key')cancel()事件。

所以要忽略k键按,

editor.on('key', function(evt) {
    var keyCodeToIgnore = 'K'.charCodeAt();   // Upper case K. Only one k key.
    var pressedKeyCode = evt.data.keyCode;
    if ( pressedKeyCode === keyCodeToIgnore ) {
        evt.cancel();
    }
}

(当然,这不会阻止&k;用其他方式添加,例如粘贴。)

请参阅http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-key

您还可以配置编辑器以阻止指定的击键。使用它你可以指定大小写。所以要忽略k而不是K:

config.blockedKeystrokes = [75];    // To ignore k and K: [75, 107]

虽然您可能也希望保留默认的封锁凯斯特。

请参阅http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-blockedKeystrokes

第一种方法当然可以让你做其他事情。你可以忽略一个“你好”来驱使人们疯狂。例如,如果之前的按键是' q'。

答案 2 :(得分:0)

在从函数返回到取消/阻止字符/事件之前使用以下代码。

e.cancelBubble = true;
e.returnValue = false;
e.cancel();
e.stop();
return false;

其中e在函数参数

答案 3 :(得分:0)

我来找一种方法将东西绑定到回车键按下。除了我使用contenteditable div标签,也许这使得上述解决方案对我不起作用。

然而我来到这里,似乎工作得很好

$(function () {
    CKEDITOR.instances['<the DOM ID of your element>'].on('key', function (e) {
        if (e.data.keyCode === 13) {
            //yeet
            e.cancel();
        }
    });
});