CKEditor键盘事件和从内联编辑器捕获数据

时间:2014-06-23 22:47:03

标签: javascript ckeditor

我正在尝试创建一个包含多个内联CKEditor字段的文档,而keyup正在抛出一个循环。 “key”事件工作正常(但没有输入最后一个字符),但是“keyups”根本没有被捕获,除非我使用editor.document.on,这是其他几个快乐提供的答案。

不幸的是,由于我有多个(超过13个)可能的字段,事件似乎除了事件本身之外不会返回任何内容。没有目标信息(我需要ID传递给我的保存数据功能),也没有编辑器(检索内容)。

目标是在输入数据时保存并验证输入的数据。我在脑海里称它们为字段,但它们都是div(因此是内联编辑)。

使用Javascript:

$(function(){

CKEDITOR.disableAutoInline = true;

$("div[contenteditable='true']" ).each(function( index ) {

    var content_id = $(this).attr('id');

    CKEDITOR.inline( content_id, {
        customConfig: '/majors/ckconfig.js'} );      
});


CKEDITOR.document.on('keyup', function(event){
      console.log(event.editor.getData()); // need to get the data, and the ID of the element.      
});
});

1 个答案:

答案 0 :(得分:3)

为什么不使用editor#change活动?

var editor = CKEDITOR.inline( content_id,
    { customConfig: '/majors/ckconfig.js' } ); 

editor.on( 'change', function() {
    console.log( editor.getData() );
} );

至于keydown,如果您仍然感兴趣,可以直接将监听器添加到可编辑元素中:

var editor = CKEDITOR.inline( content_id,
    { customConfig: '/majors/ckconfig.js' } ); 

editor.on( 'contentDom', function() {
    var editable = editor.editable();
    editable.attachListener( editable, 'keyup', function() {
        console.log( editor.getData() );
    } );
} );

editable#attachListener方法文档中阅读有关已使用方法的更多信息。