Chování formuláře upraveným JavaScriptem

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

Zdravím,

chtěl jsem se zeptat, zda má Nette nějaké specifické chování, pokud se mu „pod rukama“, tzn. na straně klienta, změní formulářový prvek, konkrétně select?

JavaScriptem si dotahuji select, nicméně jelikož nefungují snippety v include šabloně, byl jsem nucen toto řešit ručně. Funguje to perfektně, data se mi do selectu dotáhnou, ale po submitu formuláře je tento konkrétní select NULL – skoro, jako by se Nette nelíbílo, že se mu bez jeho vědomí zmenil…

Napadá někoho, proč tomu tak je?

Díky za pomoc

PHP 5.4, Nette 2.x (nyní nemohu ověřit…)

enumag
Člen | 2118
+
0
-

Nette automaticky ověřuje, že odeslaná hodnota je opravdu jedna z položek, které jsi tomu selectu předal. Je to docela základní věc z hlediska bezpečnosti.

Ellesmess
Člen | 21
+
0
-

Bohužel mě to napadlo… teď by mě zajímalo, jak se to dá vyřešit/obejít – pokud si AJAXem dotáhnu jiný select, jak mám Nette říct, že jej může akceptovat?

Díky

Prochy
Člen | 91
+
0
-

Musíš zařídit to, aby se ty data, které tam dáš pomocí ajaxu, tak aby se objevily i při refreshi v defaultním nastavení toho formuláře daného selectu. Já to řešil např. pomocí persistentní proměnný, ale už to je nějakou dobu.

Ellesmess
Člen | 21
+
0
-

Ok, nějak se s tím poperu. Díky za příspěvky, teď vím, kudy zhruba jít

mildabre
Člen | 62
+
0
-

Záleží proč select dynamicky měníš – v závislosti na jiném formulářovém prvku ? Potom je zde možnost dynamického přepínání select-ů javascriptem na straně klienta – podle stavu např. nějakého checkboxu. Na serverové straně vyhodnotíš který select byl zvolen a podle toho zpracuješ odpovídající datové pole. I validace se dá takto ošetřit – pomocí metody ->setCondition(…)->setRule() můžeš nastavit podmíněnou validaci právě podle toho jakou hodnotu má ten přepínací prvek.
Tak snad jsem Ti poradil správně, z Tvého dotazu není zcela patrné proč ten select potřebuješ dynamizovat.

bumprask
Člen | 59
+
0
-

Máme stejný problém, ve formuláři je text input a prázdný select, na text input ve formuláři mám navěšený autocomplete (jquery UI), do text inputu zadám řetězec pod ním se zobrazí seznam nalezených položek, po zvolení položky nabízené autocomplete se výsledek pomocí javascriptu vloží do připraveného prázdného Selectu jako nová položka s atributem selected. Problém nastává s hodnotou tohoto selectu, po odeslání formuláře má hodnota selectu null. Tedy formulář se neodešle se změnami provedenými javascriptem. Jak prosím tuto situaci vyřešit? Jak učinit autocomplete takto použitelným? Děkuji