Getting the textarea value of a ckeditor textarea with javascript Getting the textarea value of a ckeditor textarea with javascript javascript javascript

Getting the textarea value of a ckeditor textarea with javascript


I'm still having problems figuring out exactly how I find out what a user is typing into a ckeditor textarea.

Ok, this is fairly easy. Assuming your editor is named "editor1", this will give you an alert with your its contents:

alert(CKEDITOR.instances.editor1.getData());

The harder part is detecting when the user types. From what I can tell, there isn't actually support to do that (and I'm not too impressed with the documentation btw). See this article:http://alfonsoml.blogspot.com/2011/03/onchange-event-for-ckeditor.html

Instead, I would suggest setting a timer that is going to continuously update your second div with the value of the textarea:

timer = setInterval(updateDiv,100);function updateDiv(){    var editorText = CKEDITOR.instances.editor1.getData();    $('#trackingDiv').html(editorText);}

This seems to work just fine. Here's the entire thing for clarity:

<textarea id="editor1" name="editor1">This is sample text</textarea><div id="trackingDiv" ></div><script type="text/javascript">    CKEDITOR.replace( 'editor1' );    timer = setInterval(updateDiv,100);    function updateDiv(){        var editorText = CKEDITOR.instances.editor1.getData();        $('#trackingDiv').html(editorText);    }</script>


At least as of CKEDITOR 4.4.5, you can set up a listener for every change to the editor's contents, rather than running a timer:

CKEDITOR.on("instanceCreated", function(event) {    event.editor.on("change", function () {        $("#trackingDiv").html(event.editor.getData());    });});

I realize this may be too late for the OP, and doesn't show as the correct answer or have any votes (yet), but I thought I'd update the post for future readers.


Simply execute

CKEDITOR.instances[elementId].getData();

with element id = id of element assigned the editor.