如何使用JQuery获取CKEditor的内容?

peg*_*sus 53 ajax jquery ckeditor

我正在使用CKEditor.我使用页面方法使用ajax保存表单值.

但是CKEditor值的内容无法保存到表中.

我不回发页面.

我该怎么办?

Aeo*_*eon 191

在实例上使用CKEditor.editor.getData()调用.也就是说:

HTML

<textarea id="my-editor">
<input id="send" type="button" value="Send">
Run Code Online (Sandbox Code Playgroud)

JS for CKEditor 4.0.x

$('#send').click(function() {
    var value = CKEDITOR.instances['DOM-ID-HERE'].getData()
    // send your ajax request with value
    // profit!
});
Run Code Online (Sandbox Code Playgroud)

JS for CKEditor 3.6.x.

var editor = CKEDITOR.editor.replace('my-editor');

$('#send').click(function() {
    var value = editor.getData();
    // send your ajax request with value
    // profit!
});
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案,而不是上面的答案 (6认同)
  • 这似乎不适用于最新版本的CKEditor(4.0.2 - 2013年3月6日).然而,下面的答案是:`CKEDITOR.instances ['DOM-ID-HERE'].getData();` (3认同)

jve*_*rdi 63

如果您没有对编辑器的引用,如Aeon的答案,您也可以使用以下表单:

var value = CKEDITOR.instances['my-editor'].getData();
Run Code Online (Sandbox Code Playgroud)

  • 你先生+1.花了很长时间寻找如何从CKEDITOR的1个实例获取数据(其中有X个实例通过类"编辑器"初始化).结束于:`var strData = CKEDITOR.instances ['editor _'+ intCounter] .getData();` - 以防它对其他人有用. (4认同)

小智 9

var value = CKEDITOR.instances['YourInstanceName'].getData()
 alert( value);
Run Code Online (Sandbox Code Playgroud)

替换YourInstanceName为您的实例名称,您将获得所需的结果.


Joh*_*lia 6

getData()每次都没有工作的问题,特别是在处理现场ajax时.

能够通过运行绕过它:

for(var instanceName in CKEDITOR.instances){
    CKEDITOR.instances[instanceName].updateElement();
}
Run Code Online (Sandbox Code Playgroud)

然后使用jquery从textarea中获取值.


Ben*_*enj 5

现在jQuery 适配器已经存在,这个答案需要更新:

假设您启动了编辑器,$('.ckeditor').ckeditor(opt)然后您获得了值$('.ckeditor').val()

  • 这对我来说没有任何作用。空字符串结果。 (2认同)

Mik*_*ike -21

首先,您应该在页面中包含 ckeditor 和 jquery 连接器脚本,

然后创建一个文本区域

<textarea name="content" class="editor" id="ms_editor"></textarea>
Run Code Online (Sandbox Code Playgroud)

将ckeditor附加到文本区域,在我的项目中我使用这样的东西:

$('textarea.editor').ckeditor(function() {
        }, { toolbar : [
            ['Cut','Copy','Paste','PasteText','PasteFromWord','-','Print', 'SpellChecker', 'Scayt'],
            ['Undo','Redo'],
            ['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
            ['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
            ['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
            ['Link','Unlink','Anchor', 'Image', 'Smiley'],
            ['Table','HorizontalRule','SpecialChar'],
            ['Styles','BGColor']
        ], toolbarCanCollapse:false, height: '300px', scayt_sLang: 'pt_PT', uiColor : '#EBEBEB' } );
Run Code Online (Sandbox Code Playgroud)

提交时使用以下方式获取内容:

var content = $( 'textarea.editor' ).val();
Run Code Online (Sandbox Code Playgroud)

就是这样!:)

  • 这是我第一次看到如此被否决的答案作为已接受的答案。极好的。 (63认同)
  • 下面的答案要好得多。 (3认同)
  • 可怜的家伙……说了这么多,-19。 (2认同)