【问题标题】:CKEditor getData not up-to-date with what is in the textareaCKEditor getData 与 textarea 中的内容不一致
【发布时间】:2015-01-05 11:29:07
【问题描述】:

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

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

我实在想不通ckeditor为什么会这样……

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

【问题讨论】:

    标签: javascript jquery ckeditor refresh


    【解决方案1】:

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

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

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

    您可以阅读更多内容:

    【讨论】:

    • 感谢您的回答!我必须管理这个问题是我这边的一个问题。我使用 JSON 提交数据,然后立即重定向到另一个页面。这在旧编辑器中没有问题,因为 tinymce 中的触发器保存功能。但是我只是添加了一个回调函数,并且仅在命令执行成功时才重定向。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2011-02-08
        • 2015-03-12
        • 1970-01-01
        • 2014-07-28
        • 2014-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多