Disablování položek ve formuláři pomocí JS

DefenestrationPraha
Člen | 110
+
0
-

Mám poměrně složitý formulář, jehož jednotlivá políčka se ukazují a schovávají na základě jiných políček. Řeším to JavaScriptem, který jim nastavuje atribut hidden.

Až potud OK, ale původně jsem chtěl ta políčka zároveň i disablovat, nastavovat jim property disabled, aby se vůbec neposílala. Jenže při submitu formuláře toto Nette vůbec nebere v úvahu. Místo toho znovu zavolá metodu z FormFactory, která vytvoří ten formulář znovu, a nezdá se mi, že by tam nasázelo „disabled“ podle toho, jaký je aktuální stav formuláře upraveného JavaScriptem.

Jak se toto má správně dělat? Mám vlastní renderer, hraje to roli?

mystik
Člen | 291
+
+1
-

Server nema tuseni co jsi na klientovi upravil JavaScriptem. Otazka je proc ty pole potrebujes mit disabled i na serveru po odeslani formulare? Je na to vazane nejake dalsi zpracovani?

Teoreticky by ti mohlo stacit spravne nastavit validace a conditions.

Nebo jen trocha logiky navic v handleru submitu.

Ja tohle nekdy resim server side a redraw delam pres ajax a prekresleni snippetu formulare. Ale asi dost zalezi jaky mas konkretnu use case.

DefenestrationPraha
Člen | 110
+
0
-

mystik napsal(a):

Server nema tuseni co jsi na klientovi upravil JavaScriptem. Otazka je proc ty pole potrebujes mit disabled i na serveru po odeslani formulare? Je na to vazane nejake dalsi zpracovani?

Teoreticky by ti mohlo stacit spravne nastavit validace a conditions.

Nebo jen trocha logiky navic v handleru submitu.

Ja tohle nekdy resim server side a redraw delam pres ajax a prekresleni snippetu formulare. Ale asi dost zalezi jaky mas konkretnu use case.

Ideální by pro mě bylo, kdyby se aktuální stav „disabled“ respektoval v rámci metody vyvolávané z onSuccess. Momentálně to musím ošetřovat přímo v té metodě.

Ty conditions mě zajímají. Vím, že existují conditions svazující jednotlivé komponenty, ale nemám s tím zkušenosti.

Jak se třeba nastaví condition, že když jeden Select má vybrané políčko P, tak se jiný Select disabluje/enabluje?

mystik
Člen | 291
+
0
-

Co presne myslis tim ze by se stav disabled mel respektovat?

DefenestrationPraha
Člen | 110
+
0
-

mystik napsal(a):

Co presne myslis tim ze by se stav disabled mel respektovat?

Že bych v rámci dat dodaných do metody onSuccess nedostal obsah políček, která jsou aktuálně (po úpravách provedených JS) nastavená jako disabled. Ale pokud to nejde, nejde to.

Spíš mě upřímně zajímají ty conditions. Je možné nastavit disablování/enablování jednoho inputu v závislosti na hodnotě druhého? To asi ne, že.

mystik
Člen | 291
+
0
-

Zkusil bych si pridat callback rule ve kterem ten ten input nastavis na disabled. Ale nejsem si jisty jestli to pujde.

Realne by to nemelo byt potreba. Obvykle se to ze je policko disabled bere vice mene jen jako info pro frontend. Proto jsem se prave ptal na co tu informaci vlastne potrebujes na serveru.

Potrebujes zajistit ze je nevyplnene aby ti tam utocnik neposlal nesmysl? Na to staci validace.

Potrebujes zjistit ze se neposlalo? Ma hodnotu null.

Asi by bylo nejlepsi kdybys ukazal jak to mas napsane ted. At muzem pripadne poradit jestli to nejde napsat jinak.

DefenestrationPraha
Člen | 110
+
0
-

mystik napsal(a):

Zkusil bych si pridat callback rule ve kterem ten ten input nastavis na disabled. Ale nejsem si jisty jestli to pujde.

Realne by to nemelo byt potreba. Obvykle se to ze je policko disabled bere vice mene jen jako info pro frontend. Proto jsem se prave ptal na co tu informaci vlastne potrebujes na serveru.

Potrebujes zajistit ze je nevyplnene aby ti tam utocnik neposlal nesmysl? Na to staci validace.

Potrebujes zjistit ze se neposlalo? Ma hodnotu null.

Asi by bylo nejlepsi kdybys ukazal jak to mas napsane ted. At muzem pripadne poradit jestli to nejde napsat jinak.

Hele, máš pravdu. Stejně musím všechno profiltrovat ještě na serveru, abych odchytal případné podezřelosti. Takže bych na ten stav nemohl spoléhat.