关于javascript:CKEditor getData与textarea中的内容不是最新的

CKEditor getData not up-to-date with what is in the textarea

我有一个网站,允许用户进行输入并创建新内容。我一直在输入字段中使用tinymce。在今天切换到ckeditor之后,我注意到我遇到了与开始时与tinymce相同的问题:

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

我真的不知道为什么ckeditor会这么做...

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


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

我从来没有听说过提交表单时不会触发这种机制的情况,但是如果由于某些原因它对您不起作用,那么您可以:

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

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

  • 将数据保存在CKEditor中以替换文本区域。
  • Ajax应用程序中的CKEditor。


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

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


在粘贴项目后,如果在文本区域的末尾添加空格,则会触发更新,而getData()将返回新的正确值。

否则,粘贴后不会对getData()进行更新;

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