CKEditor getData与textarea中的内容不是最新的

时间:2014-11-08 21:12:46

标签: javascript jquery ckeditor refresh

我有一个网站,允许用户输入和创建新内容。我总是使用tinymce作为输入字段。今天切换到ckeditor之后,我注意到,我遇到了同样的问题,我在开始时使用了tinymce:

提交表单时,不会提交对编辑器中内容所做的更改。不知怎的,ckeditor.getData() - 方法似乎返回旧值(不是更新的值)。在某些情况下,它会返回新值。 (这只有在我尝试更新内容时才会发生,我使用setData()加载到编辑器中,而不是使用空的ckeditor-elements)

我真的无法弄清楚为什么ckeditor这样做......

在tinymce中,这是通过调用tinyMCE.triggerSave()来解决的。在获取textarea的内容之前,但我找不到ckeditor的等价物,有没有人知道如何在尝试从编辑器中读取内容之前刷新内容?因为这开始让我发疯...

3 个答案:

答案 0 :(得分:1)

实际上这似乎解决了这个问题(至少在99%的情况下) http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-updateElement

也许有人知道更好的答案......

答案 1 :(得分:1)

如果CKEditor替换<textarea>中的<form>,则会为表单的onsubmit事件添加一个监听器,因此在提交表单时editor.updateElement()调用方法以更新<textarea>的值。

我从未听说提交表单的情况不会触发此机制,但如果由于某些原因它不适合您,那么您可以:

  • 手动调用editor.updateElement()方法,
  • 或使用editor.getData()方法直接获取数据并在XHR请求中使用它(如果您这样做(这可以解释为什么onsubmit未执行)。

您可以在以下网址阅读更多内容:

答案 2 :(得分:0)

遇到同样的问题,在粘贴一个项目后,如果我在文本区域的末尾添加一个空格,那么它将触发更新,getData()将返回新的正确值。

否则,在粘贴之后,不会对getData();

进行更新

editor.updateElement()//什么都没做