CKEditor – textarea je prazdny (?)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wdolek
Člen | 331
+
0
-

pri pouziti CKEditoru na TextArea, a pri zadani pravidla Form::FILLED mi pri prvnim pokusu odeslani formulare vyhodi nette chybu, ze text musim vyplnit. kdyz zmacknu tlacitko znovu, formular se odesle.

nema nekdo poneti, proc to?… kdyz CKEditor nepouziji, tak formular jde odeslat hned na poprve.

CKEditor pouzivam stylem CKEDITOR.replace(‚jmenoTextArea‘);

ji_ri_k
Člen | 44
+
0
-

Mohlo by to být tím, že ten CKeditor je tam přidán až „live“. Po prvním odeslání se ti teprve uloží z té live instance CKeditoru data do textarea (formulář máš nastaven tak, aby si pamatoval). Při druhém odeslání ti to uloží ty data z toho prvního odeslání, nikoliv změněná data. Tu chybu ti vyhodí JavaScript, nebo přímo už Nette?

// Doplnění: ten CKeditor ti <textarea> nahradí „live“ → tzn. na JS budeš potřebovat jQuery.live

Editoval ji_ri_k (22. 10. 2009 14:36)

wdolek
Člen | 331
+
0
-

ji_ri_k: diky za info :) nejak ale tedy nerozumim, jak to vyresit (jak pouzit jQuery.live)…
jinak chybu nahlasi javascripti validator Nette

nAS
Člen | 277
+
0
-

Bude potřeba donutit CKeditor, aby nakopíroval svůj obsah do <textarea> předtím, než se spustí validace Nette. Teď to pravděpodobně probíhá v opačném pořadí a proto to poprvé vyhodí chybu.

wdolek
Člen | 331
+
0
-

nAS: jenze jak nato? kdyz prepisu v HTML pro formu nejakou udalost „onsubmit“, zrusim tim preci volani nettiho eventu pro „onsubmit“… nebo lze nejak pridat js do onclick?

jinak zjistuju, ze mi to dela jen u nekterych formularu :( jsem z toho jelen docela

Aurielle
Člen | 1281
+
0
-
<form action="" onsubmit="nejaka_fce();">

není totéž co

$form->onSubmit[] = array($this, 'nejakaFce');

Nevím, jak přesně funguje CKEditor, ale řešil bych to tak, že bych na JS onsubmit funkci navázal vyplnění textarey (funkce by se provedla ještě před validací, v onsubmit může být funkcí víc) a až pak nechal Nette validovat.

edit: U nějakých formů ti to funguje proto, že CKEditor v určitých intervalech aktualizuje obsah textarey. Tedy je v momentě validování již vyplněná. Koukni se přes firebug na ten iframe ckeditoru, tam je ta funkce co potřebuješ.

Editoval gmvasek (23. 10. 2009 22:16)

wdolek
Člen | 331
+
0
-

gmvasek: ano, vim, ze:

$form->onSubmit[] = array($this, 'userEditFormSubmitted');

neni to same jako onsubmit v elemenu <form>

a prave proto by me zajimalo, jestli jde nejak onsubmit doplnit o vlastni funkce…

$html = $form->getElementPrototype();
$html->onsubmit = "naplnTextAreaHodnotouZCKEditoru();";

pricemz v HTML by v onsubmit stalo:

onsubmit="naplnTextAreaHodnotouZCKEditoru(); return validateCustomTextEditForm(this)"

… kdyz provedu vyse zminene, tak tim zabiju puvodni Netti onsubmit :(((

wdolek
Člen | 331
+
0
-

… aha koukam, ze jsem Nette krivdil .) on se tam validacni event sam prida ;) a dokonce si sam prida i strednik… hurray :)