Проблеми с CKEditor при актуализиране на стойността на texarea

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

Има два метода за създаване на CKEditor от текстово поле. Или да използвате jQuery

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

or

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

И двата метода създават моя редактор за богат текст на мястото на моето текстово поле и в двата случая или при зареждане на страницата, или след извикване на ajax. Това е добре.

Тук започват проблемите. При тези условия CKEditor стартира без никакви конзолни грешки, но никога не актуализира стойността на текстовото поле и винаги изпраща стара стойност.

1) Ако създам своето текстово поле при зареждане на страницата и използвам $("#textareaid").ckeditor();. CKEditor стартира добре без никакви конзолни грешки, но при редовно изпращане на формуляр изпратената стойност е празна (стара стойност).

2) Ако създам своето текстово поле след извикване на ajax и използвам window["textareaid"] = CKEDITOR.replace("textareaid");. Отново CKEditor инициира правилно, но ако направя $("form").serialize() и предупредя за резултата, виждам, че стойността на текстовото поле е празна (стара стойност).

Не мога да създам демонстрационна страница и да я кача в момента и знам, че никой няма да се опита да възпроизведе този проблем без моите кодове (поне аз не бих го направил, защото съм толкова мързелив)

Ще подготвя демонстрационна страница, за да копирам този проблем за вас, но дотогава питам дали някой тук се е сблъсквал със същия проблем и знае причината или е намерил решение?

Благодаря


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: Cannot read property 'updateElement' of undefined - 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();

Ако искате да запазите селектора на id, опция е да използвате скрито поле с крайното име на полето на формуляра, към което изпращате стойността, когато изпращате формуляра. $("#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