1

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;

                     });
                }
    });

これに対する解決策を提案してもらえますか。ありがとう

4

4 に答える 4

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」だった場合に「u」を無視すると、人々を狂わせる可能性があります。

于 2014-11-07T11:54:09.767 に答える
0

関数から戻る前に次のコードを使用して、キャラクター/イベントをキャンセル/ブロックします。

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

ここで、e は関数のパラメーターにあります

于 2012-12-03T12:42:14.380 に答える