将CKEDITOR转换为TextArea

时间:2014-11-27 07:44:01

标签: javascript jquery html ckeditor

我有一个文本区域和一个按钮。点击该按钮,我将textarea转换为ckeditor。 我的附加要求是,点击其他按钮时,必须将ckeditor转换回textarea。 我的代码:

<textarea name="editor"></textarea>
<input type="button" value="click" onclick="CreateEditor('editor')" />

<script type="text/javascript">
    function CreateEditor(name) {

        var editor = CKEDITOR.instances[name];
        if (editor) { editor.destroy(true); }

        CKEDITOR.replace(name, {
            toolbarStartupExpanded: false,
            autoGrow_onStartup: true
        });

        if (CKEDITOR.env.webkit) {
            CKEDITOR.on("instanceReady", function (e) {
                document.getElementsByClassName("cke_wysiwyg_frame cke_reset")[0].contentDocument.body.parentNode.contentEditable = "true";
                if (typeof FocusedElement !== 'undefined') {
                    FocusedElement = e.editor.name;
                }
            });
        }
    }

</script>

我怎样才能实现这个目标?

3 个答案:

答案 0 :(得分:1)

如果是更常见的用例 - 要求从CKEditor(而不是文本)获取HTML代码,请使用editor.getData()。有关详细信息,请参阅documentation

答案 1 :(得分:1)

你在自己的代码中有这个:

    function DestroyEditor(name) {

      var editor = CKEDITOR.instances[name];
      if (editor) { editor.destroy(true); }

    }

答案 2 :(得分:0)

以下代码行应该为您提供CKEditor

中的平面文本
var text = CKEDITOR.instances.editor.document.getBody().getText();

现在,您必须删除CKEDitor,因为这是代码行

CKEDITOR.instances.editor.element.remove()

现在,您可以将<textarea name="editor"></textarea>添加到您的dom,再次为其指定文字,如

$("textarea[name=editor]").value = text;