在变更事件中将ckeditor内容转换为textarea - 表单上有多个ckeditors

时间:2014-02-27 08:56:23

标签: jquery ckeditor

在很多帮助下,我终于让CKEditor更新了相关的文本区域。 See the post here

但是,当表单上有超过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文本区域?

3 个答案:

答案 0 :(得分:12)

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


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


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

我希望这会对某人有所帮助。

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

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

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

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