我正在升级到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 开始1:http://ckeditor.com/forums/Support/Second-Time-jQuery-Doesnt-Work似乎有一些时间安排。但就我而言,这已经到了。
答案 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
}
} );