Проблемы с CKEditor при обновлении значения texarea - PullRequest
4 голосов
/ 07 октября 2011

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

Существует два метода создания CKEditor из textarea. Либо использовать jQuery

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

или

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

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

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

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

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

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

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

Спасибо

Ответы [ 3 ]

10 голосов
/ 07 октября 2011

С вами все будет в порядке, если вы позвоните:

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

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

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

У меня были те же проблемы пару дней назад:)

1 голос
/ 02 мая 2012

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

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

0 голосов
/ 13 июля 2013

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

CKEDITOR.instances.textAreaClientId.on('blur', function() CKEDITOR.instances.textAreaClientId.updateElement();});
...