2016-05-12 13 views
1

In meiner Anwendung habe ich eine Instanz eines CKEditor. Während der Benutzer Text in den Editor eingibt, sollte der erste in Großbuchstaben geschrieben sein. Dafür habe ich ein jQuery keydown Event-Handler, wie folgt aus:KeyDown-Ereignis für CKeditor

$(document).ready(function() { 
    CKEDITOR.instances.CKEditor1.on('contentDom', function() { 
     CKEDITOR.instances.CKEditor1.document.on('keydown', function (event) { 
      if (this.selectionStart == 0 && event.keyCode >= 65 && event.keyCode <= 90 && !(event.shiftKey) && !(event.ctrlKey) && !(event.metaKey) && !(event.altKey)) { 
       var $t = $(this); 
       event.preventDefault(); 
       var char = String.fromCharCode(event.keyCode); 
       $t.val(char + $t.val().slice(this.selectionEnd)); 
       this.setSelectionRange(1, 1); 
      } 
     }); 
    }); 
}); 

Es gibt einen Laufzeitfehler dh

0x800a138f - JavaScript runtime error: Unable to get property 'on' of undefined or null reference

Wie kann ich keydown Ereignis für ckeditor (den obigen Code erstellen schrieb ich in. .aspx-Seite)

Antwort

0

Ich glaube, dass Sie das contentDom-Ereignis falsch registrieren. Um zu instanziiert CKEditor und registrieren das contentDom Ereignis, das Sie tun würde

CKEDITOR.replace('editor1', { 
    on: { 
     instanceReady: function() { 
      alert(this.name); // 'editor1' 
      var editor = this; 
      editor.on('contentDom', function() { 
       var editable = editor.editable(); 
       editable.attachListener(editable, 'click', function() { 
       console.log('The editable was clicked.'); 
       }); 
      }); 
     } 
    } 
}); 

Ihr Code versucht, die CKEditor Instanz zugreifen, bevor es instanziieren beendet hat. Weitere Informationen finden Sie unter http://docs.ckeditor.com/#!/api/CKEDITOR.config und http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDom