nForm – nefunguje negace Form::EQUAL u Selectu / RadioListu a ‚toggle‘
- Vitek Jezek
- hledá kolegy | 285
mam Select/Radiolist kde mam hodnoty ‚ano‘, ‚castecne‘, ‚ne‘. Potreboval bych, aby kdyz kliknu na ‚ano‘ a ‚castecne‘ se zobrazi nejakej div s textareou.
Zkusil jsem $form[‚test‘]->addCondition(‚!‘.Form::EQUAL,
2)->toggle(‚testDiv‘);
ale bohuzel – nette ignoruje negaci a implementuje to jako
addCondition(Form::EQUAL, 2) – div se zobrazi jen prikliknuti
na ‚ne‘.
Budu vdecnej za kazde navrhy : )
- Vitek Jezek
- hledá kolegy | 285
_Martin_: to jsem zkousel jako druhy, bohuzel, nForma si vezme jen posledni podminku.
David Grudl: to jsem zkousel vubec jako prvni ; ) Ale ~ me pro negaci nebere nikde v nFormach, zato Viliam Kopecky (enoice) me poradil fintu s „!“., ktera jinde funguje.
Zkousil jsem problem taky resit pres
$form['test']->addCondition(Form::RANGE, array(1,2))
, to ale
hazi JS error.
//PHP 5.2.6, verze /Nette/Forms/Form.php: 65 2008–09–04 21:20:53 (nevim, kde vycist ‚absolutni‘ verzi revize)
Editoval Whitek (6. 10. 2008 20:59)
- David Grudl
- Nette Core | 8218
Ty nejspíš používáš tu samostatnou verzi na https://files.nette.org/NForm.zip – aktualizuju je sporadicky, takže to možná bylo zastaralé; zkus si ji stáhnout znova a napiš, jestli to už funguje.
- Vitek Jezek
- hledá kolegy | 285
Jojo, presne tu pouzivam.
Stahnul jsem ji, avsak bohuzel nefunguje : (
Tady je testovaci priklad s 3 moznyma resenima , ktere me napadli, avsak ani jedno se me nepodarilo zprovoznit.
- David Grudl
- Nette Core | 8218
ad 1) nette nebere negaci
Nette negaci (zapsanou pomocí ~
) bere, ale v generátoru
toggle-efektů byla chyba, která negaci nezohledňovala. Díky za report,
opraveno.
ad 2) range (0–1) generuje chybu v JS
Důvod je ten, že podmínka RANGE
se pojí jen textovým
políčkem. Na vadnou podmínku by ale měl skript upozornit a ne generovat
chybný JS. Opět díky za report, opraveno.
ad 3) nebo dvojnasobna podminka, nette si vybere tu posledni
Nette si vybere obě podmínky, takže div dvakrát přeblikne a zůstane v poslední pozici.
Ještě existuje jedno řešení – metodě toggle() lze druhým parametrem říct, jestli má při splnění podmínek objekt schovat (TRUE, výchozí) nebo zobrazit (FALSE).
- David Grudl
- Nette Core | 8218
Rozšířil jsem podmínku EQUAL
tak, aby akcepovala i pole
hodnot – tj. kontroluje se, zda-li hodnota odpovídá alespoň jedné
z uvedených hodnot:
$form['send']->addCondition(Form::EQUAL, array(0, 1))->toggle('sendBox');