Как я могу получить содержимое CKEditor, используя JQuery? - PullRequest
51 голосов
/ 26 сентября 2010

Я использую CKEditor. Я сохраняю значения формы с помощью ajax, используя методы страницы.

Но содержимое значения CKEditor не может быть сохранено в таблицу.

Я не отправляю страницу обратно.

Что я могу сделать для этого?

Ответы [ 14 ]

188 голосов
/ 17 декабря 2010

используйте CKEditor.editor.getData () для экземпляра.То есть:

HTML

<textarea id="my-editor">
<input id="send" type="button" value="Send">

JS для CKEditor 4.0.x

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

JS для 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!
});
62 голосов
/ 19 декабря 2011

Если у вас нет ссылки на редактор, как в ответе Aeon, вы также можете использовать форму:

var value = CKEDITOR.instances['my-editor'].getData();
8 голосов
/ 03 января 2015
var value = CKEDITOR.instances['YourInstanceName'].getData()
 alert( value);

Замените YourInstanceName именем вашего экземпляра, и вы получите желаемый результат.

6 голосов
/ 14 января 2014

У меня были проблемы с getData(), который не работал каждый раз, особенно при работе с живым ajax

Был в состоянии обойти это, запустив:

for(var instanceName in CKEDITOR.instances){
    CKEDITOR.instances[instanceName].updateElement();
}

Затем используйте jquery для получения значения из текстовой области.

2 голосов
/ 04 ноября 2014

Спасибо Джону Магнолии. Это моя функция postForm, которую я использую в своих проектах Symfony, и теперь можно работать с CK Editor.

function postForm($form, callback)
{
  // Get all form values
  var values = {};
  var fields = {};

  for(var instanceName in CKEDITOR.instances){
      CKEDITOR.instances[instanceName].updateElement();
  }

  $.each($form.serializeArray(), function(i, field) {
      values[field.name] = field.value;
  });

  // Throw the form values to the server!
  $.ajax({
      type        : $form.attr('method'),
      url         : $form.attr('action'),
      data        : values,
      success     : function(data) {
          callback( data );
      }
  });
1 голос
/ 07 июня 2017

вы можете получить данные, как это:

<script>
var data = CKEDITOR.instances.editor1.getData();
// Your code to save "data", usually through Ajax.
</script>

ссылка: http://docs.ckeditor.com/#!/guide/dev_savedata

1 голос
/ 20 августа 2015

Теперь, когда jQuery адаптер существует, этот ответ необходимо обновить:

Скажем, вы запустили редактор с помощью $('.ckeditor').ckeditor(opt), а затем получили значение с $('.ckeditor').val()

0 голосов
/ 13 марта 2019

Чтобы получить данные ckeditor, вам нужно получить экземпляр ckeditor

HTML код:

<textarea class="form-control" id="reply_mail_msg" name="message" rows="3" data-form-field="Message" placeholder="" autofocus="" style="display: none;"></textarea>

Javascript:

var ck_ed = CKEDITOR.instances.reply_mail_msg.getData();
0 голосов
/ 24 октября 2018

версия 4.8.0

$('textarea').data('ckeditorInstance').getData();
0 голосов
/ 13 июня 2018

Простой способ получить текст внутри редактора или его длину:)

 var editorText = CKEDITOR.instances['<%= your_editor.ClientID %>'].getData();
 alert(editorText);

 var editorTextLength = CKEDITOR.instances['<%= your_editor.ClientID %>'].getData().length;
 alert(editorTextLength);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...