【问题标题】:Preventing ckeditor to display character on keypress防止ckeditor在按键上显示字符
【发布时间】:2012-11-11 15:22:19
【问题描述】:

我有一个 CKEditor 3.0 实例 'editor' 并在其 'key' 事件上附加了一个侦听器,因此当该函数返回 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;

                     });
                }
    });

你能建议我解决这个问题吗? 谢谢

【问题讨论】:

  • 在哪里记录了返回 false 会阻止关键字符出现?
  • 刚刚考虑了java脚本键事件监听器
  • 感谢您的澄清,我误解了您的问题并投票删除了我的答案。

标签: javascript ckeditor fckeditor


【解决方案1】:

最近找到了答案。这在最新版本(4.x)中对我有用。

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

【讨论】:

    【解决方案2】:

    在 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]
    

    虽然您可能还想保留默认的blockedKeystrokes。

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

    当然,第一种方法可以让您做其他事情。例如,如果之前的按键是“q”,则忽略“u”可能会让人抓狂。

    【讨论】:

      【解决方案3】:

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

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

      其中 e 在函数的参数中

      【讨论】:

        【解决方案4】:

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

        不过我是这么想的,这似乎工作得很好

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-09
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多