CKEditor的SetData在版本4中不起作用 -

时间:2016-05-05 02:30:33

标签: jquery html ckeditor

我正在升级到CKEditor 4.5.8版。我使用jQuery访问CKEditor API。

编辑的文本区域没有更新。我需要设置配置选项吗?

HTML:

<textarea name="mck_1" id="mck_1"> Enter text. </textarea>
<script> CKEDITOR.replace( 'mck_1' ); </script>

使用Javascript:

CKEDITOR.instances.mck_1.setData("Hello");

我该如何调试?我是否必须明确更新display / textarea?

如果我尝试手动更新Firebug中的textarea,它会说&#34; undefined&#34;。

CKEDITOR.instances.mck_1.setData("hi");
undefined

有很多&#34; setData无效&#34; StackOverflow中过去版本的CKEditor的问题,但没有一个建议的解决方案对我有用。

帮助!

MMiz

编辑:我意识到第一个&#34; setData&#34;在textarea实际上工作。它是第二个不显示的。从thread

开始

1http://ckeditor.com/forums/Support/Second-Time-jQuery-Doesnt-Work似乎有一些时间安排。但就我而言,这已经到了。

4 个答案:

答案 0 :(得分:1)

我目前正在使用 ckeditor5,但以上答案均不适用于我。 基于 document,您可以使用以下代码行操作 ckeditor 的内部 html:

// A reference to the editor editable element in the DOM.
const domEditableElement = document.querySelector( '.ck-editor__editable' );

// Get the editor instance from the editable element.
const editorInstance = domEditableElement.ckeditorInstance;

// Use the editor instance API.
editorInstance.setData( '<p>Hello world!<p>' );

答案 1 :(得分:0)

事实证明答案是在CKEditor文档中(是的,我知道 - 首先是RTFM)。导致此行为的根本原因是setData方法是异步的,因此您需要相应地进行编码。

http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData

引用:&#34;请注意,此方法是异步的。如果在设置数据后需要与编辑器进行交互,则必须使用回调参数。&#34;

在我的情况下,因为我尝试连续两次setData,所以我肯定需要回调。它现在有效。

答案 2 :(得分:0)

$('textarea').each(function () {
   var $textarea = $(this);
   CKEDITOR.instances[$textarea.attr('name')].setData($textarea.val());
});

从ckeditor获取数据并设置回编辑器的instaed使用textarea并迭代并获取所有数据并设置为每个ckeditor ,,,在迭代之前创建CKEDITOR的实例

答案 3 :(得分:0)

此-> http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData

替换:

CKEDITOR.instances.editor1.updateElement();

使用:

CKEDITOR.instances['editor1'].setData(response, {
                    callback: function() {
                    this.checkDirty(); // true
                    }
                } );