在变更事件中将ckeditor内容发送到textarea – 表单上的多个ckeditors

在很多帮助下,我终于让CKEditor更新了相关的文本区域。 请看这里的post 。

但是,当表单上有超过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个CKEditor时,如何更新每个关联的CKEditor文本区域?

对于要在页面上安装的每个ckeditor实例,请将以下代码添加到jquery脚本中:

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

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

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

如果您按类名替换textarea元素,只需执行以下操作:

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

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

我处理多个CKEditor更新的方法是在提交表单时使用此代码

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