Проблемы CKEditor с обновлением значения texarea

В моей программе php я отображаю формы ввода либо обычным способом при загрузке страницы, либо в диалоговом окне с использованием вызовов ajax.

Есть два способа создать CKEditor из textarea. Либо использовать jQuery

$("#textareaid").ckeditor();

or

window["textareaid"] = CKEDITOR.replace("textareaid");

Оба метода создают мой форматированный текстовый редактор вместо моей текстовой области в обоих случаях либо при загрузке страницы, либо после вызова ajax. Хорошо.

Здесь начинаются проблемы. В этих условиях CKEditor запускается без каких-либо ошибок консоли, но никогда не обновляет значение textarea и всегда отправляет старое значение.

1) Если я создам свою текстовую область при загрузке страницы и использую $("#textareaid").ckeditor();. CKEditor инициирует нормально без каких-либо ошибок консоли, но при отправке обычной формы отправленное значение пусто (старое значение).

2) Если я создам свою текстовую область после вызова ajax и использую window["textareaid"] = CKEDITOR.replace("textareaid"); . Опять же, CKEditor запускается правильно, но если я делаю $("form").serialize() и предупреждаю результат, я вижу, что значение textarea пустое (старое значение).

Я не могу создать демо-страницу и загрузить ее прямо сейчас, и я знаю, что никто не попытается воспроизвести эту проблему без моих кодов (по крайней мере, я бы не стал, потому что я такой ленивый).

Я подготовлю демонстрационную страницу, чтобы воспроизвести эту проблему для вас, ребята, но до тех пор я спрашиваю, сталкивался ли кто-нибудь здесь с той же проблемой и знает причину или нашел решение?

Спасибо


person Ergec    schedule 07.10.2011    source источник
comment
Никогда не было такой проблемы. Если вы просматриваете текстовое поле с помощью Firebug и одновременно вводите текстовое поле, видите ли вы, что ваш текст добавляется между тегами?   -  person Chris G.    schedule 07.10.2011
comment
@Chris G. Ни в Chrome, ни в Firfox CKEditor никогда не обновляет данные между тегами textarea. Я также проверил фактические образцы файлов CKEditor, и они тоже не обновляются.   -  person Ergec    schedule 07.10.2011
comment
@ergec Вы пробовали мое решение?   -  person Yngve B-Nilsen    schedule 07.10.2011


Ответы (3)


Вы должны быть в порядке, если вы позвоните:

 CKEDITOR.instances[your instance].updateElement();

"ваш экземпляр" в eaxmple будет просто textareaid, так как это то, что вы используете в функции CKEDITOR.replace()

перед сериализацией формы.

Были точно такие же проблемы пару дней назад :)

person Yngve B-Nilsen    schedule 07.10.2011
comment
мой все еще не работает, говоря Uncaught TypeError: невозможно прочитать свойство updateElement неопределенного - person Habib Rehman; 16.05.2016
comment
@HabibRehman Извините, но этот ответ датирован октябрем 2011 года ... Я думаю, вам следует изучить более современные редакторы форматированного текста :) - person Yngve B-Nilsen; 25.05.2016
comment
Спасибо. Это была именно моя проблема. Я только что ввел сериализацию для ajax, где раньше просто отправлял форму через POST. Это было трудно найти ошибку. - person Watercayman; 14.07.2017

Я только что испытал этот же симптом, и, похоже, он связан с использованием идентификатора для выбора объекта для текстовой области вместо имени с помощью адаптера jQuery. В справочном материале по адаптеру jQuery указано, что, когда это текстовая область, он автоматически отправляет это значение обратно, поэтому он может неправильно проверяться как текстовая область с jquery $("#myTextarea").ckeditor();

Если вы хотите сохранить селектор идентификатора, можно использовать скрытое поле с окончательным именем поля формы, в которое вы отправляете значение при отправке формы. $("#myHiddenField").val($("#myTextarea").val());

person Eric P    schedule 01.05.2012

после загрузки редактора путем замены вы можете добавить эту строку

CKEDITOR.instances.textAreaClientId.on('blur', function() CKEDITOR.instances.textAreaClientId.updateElement();});
person Mhmd    schedule 13.07.2013