Nefunguje formulár vo Firefoxe, ide v Safari

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

Ahojte,

používam Nette „version 2.0-dev released on 2011–07–13“ a PHP 5.3.

Nefunguje mi odosielanie formuláru vo Firefoxe, funguje OK v Safari.

Vo Firefoxe keď dám správne vyplnený formulár odoslať, tak mi zobrazí „Please fill out this field“, pričom správa je mimo okna browseru, viď. obrázok http://q7.sk/nette/tmp.jpg

Vie niekto pomôcť? Ďakujem.

nanuqcz
Člen | 822
+
0
-

Ahoj, tipuju to na tento problém: Máš vyplněný text v CKEditoru, ale ne v původním textarea. A protože tuto textareu máš nastavenu jako povinnou, javascript ti vyhodí tuhle hlášku.

Řešení: Zavolat před každým odesláním takového formuláře skript

for ( instance in CKEDITOR.instances )
    CKEDITOR.instances[instance].updateElement();

Editoval nanuqcz (26. 3. 2012 15:42)

duke
Člen | 650
+
0
-

Konkrétně tak, že v továrničce, kde vytváříš formulář budeš mít:

$form->getElementPrototype()->onSubmit("for (instance in CKEDITOR.instances) CKEDITOR.instances[instance].updateElement(); return true");

Navázat to na form pomocí unobtrusive javascriptu je problematické (pokud někdo ví jak, nechť poradí), neboť potřebuješ tento kód volat ještě před validací v netteForms.js, která si tento event už také zaregistrovala. Použití inline javascriptu v onsubmit je jediné, co mi fungovalo.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Nešlo by to zunobtrusivnit tak, že by se tento unobstrusive skript nalinkoval dřív než netteForms.js? Možná je to nesmysl, ale mělo by to zajistit dřívější registraci callbacku úplně stejné.

duke
Člen | 650
+
0
-

Specifikace W3C modelu pokud vím nezaručuje, že handlery budou volány v pořadí, v jakém byly registrovány. Nicméně se zdá, že v aktuálních prohlížečích tomu tak je.
Zaručené by to bylo v případě, že by se handlery registrovali jednotně např. přes jquery (tj. jak pro netteForms tak pro ckeditor).