AppForm a dynamické doplnění SelectBoxu přes JS

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

Ahoj!

Nevím si rady s následujícím:
Mám jednoduchý formulář s jedním multiselectem obsahujícím jeden option. Tento formulář vytvářím v action pomocí továrničky na komponenty. Vypadá asi takto:

$form = new AppForm($this, 'xxxForm', newConventionalRenderer);
$form->addMultiSelect("lstProducts","")->setItems(array("1"=>"Prvek 1"));
$form->addSubmit("sbButton","Uložit");
$form->onSubmit[] = array($this, 'xxxFormSubmitted');

Pokud ho odešlu tak jak je teď napsaný nahoře, zavolá se správně funkce xxxFormSubmitted() pro zpracování.

Pokud ale pomocí jQuery přidám do selectu ve formuláři nějaké options navíc, tak pak se formulář sice také odešle, ale už se mi nezavolá funkce xxxFormSubmitted(). Nemůžu přijít na to, čím to je. Kontroloval jsem co se odesílá pomocí firebugu – obě možnosti zasílají totožná data, ale v druhém případě se mi nezavolá xxxFormSubmitted(). Nevíte, kde je chyba?

Děkuji za pomoc!

Honza Marek
Člen | 1664
+
0
-

To bude asi nějakou ochranou proti podvrhnutí. Formuláře tuším kontrolují, jestli v selectu dostanou nějakou z hodnot, kterou jsi jim nastavil.

Patrik Votoček
Člen | 2221
+
0
-

to bude validací… nette si myslím kontroluje jestli to co jsi poslal jako „vybranou“ volbu seznam obsahoval. Pokud ne neni validni. Tím pádem nevolá onSubmit ten se totiž volá pouze pokud je form validní. Budeš muset něják pořešit aby jsi předal položky které jsi přidal pomocí jQuery byly i v definici MultiSelectu.

tomp
Člen | 6
+
0
-

JJ, máte pravdu, je to validací. Když přidám optiony už při vytváření formuláře, tak to pak jde. Jen to funguje trochu obráceně než jsem chtěl, ale ono to zas tak nevadí ;)