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在
我从来没有听说过提交表单时不会触发这种机制的情况,但是如果由于某些原因它对您不起作用,那么您可以:
-
手动调用
editor.updateElement() 方法, -
或使用
editor.getData() 方法直接获取数据,并在XHR请求中使用它(如果这样做的话,这将解释为什么不执行onsubmit )。
您可以在以下内容中阅读更多内容:
- 将数据保存在CKEditor中以替换文本区域。
- Ajax应用程序中的CKEditor。
实际上,这似乎可以解决问题(至少在99%的情况下)
http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-updateElement
也许有人知道更好的答案...
在粘贴项目后,如果在文本区域的末尾添加空格,则会触发更新,而getData()将返回新的正确值。
否则,粘贴后不会对getData()进行更新;
editor.updateElement()//什么也没做