2014-02-27 32 views
7

有了很多帮助,我终于得到了CKEditor来更新关联的文本区域。 See the post hereckeditor内容更改为textarea更改事件 - 表单上的多个ckeditors

但是,当表单上有超过1个CKEditor时,我很难理解如何让CKEditor更新每个关联的文本区域。

这里是我现在有的jQuery。它只更新窗体上的最后CKEditor的相关文本区域:

for (var i in CKEDITOR.instances) { 
     CKEDITOR.instances[i].on('change', function() { CKEDITOR.instances[i].updateElement() }); //update the relative hidden textarea. 
    } 

当我在表格上5个或10 CKEditors如何更新各相关CKEditor的文本区域?

回答

12

时,对于要安装你的页面上的CKEditor的每个实例,下面的代码添加到您的jQuery脚本:


CKEDITOR.instances['id_of_text_area'].on('change', function() { CKEDITOR.instances['id_of_text_area'].updateElement() }); 


上面的JavaScript应该替换我在原始问题中显示的代码。

我希望这对一些人有帮助。

+1

最后,你是唯一一个在互联网上发布了答案的人。 – dspacejs

3

您编写的代码将一次更新一个CKEditor的textarea,因为它正在为每个CKEditor添加一个更改事件。因此,这将始终更新已更改的最后一个元素。

处理多个CKEditors的更新用的方式是通过使用此代码提交我的形式

for (var i in CKEDITOR.instances) { 
    CKEDITOR.instances[i].updateElement(); 
} 
+0

谢谢,但我需要的CKEditor当用户输入数据来更新各相关文本区域到CKEditor的时候有表单上有1个以上的CKEditor - 不是当我提交表单时。有任何想法吗? – user3354539

4

如果您通过类名替代textarea元素,只是这样做:

CKEDITOR.on('instanceReady', function(event) { 
    var editor = event.editor; 

    editor.on('change', function(event) { 
     // Sync textarea 
     this.updateElement(); 
    }); 
});