Validace části formuláře jen pokud je formulář zobrazen pomocí Bootstrap Collapse

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

Ahoj, pořád nemůžu přijít na to, jak validovat prvky části formuláře, pokud je v šabloně skrývám a zobrazuji pomocí Bootstrap Collapse – http://getbootstrap.com/javascript/#…

Pokud je část formuláře zobrazena, povinná pole se musí vyplnit, pokud je formulář schován, prvky se nevyplňují.

Mohl by mi někdo poradit jak na to ?

<h3 class="no-border">Doručit na jinou adresu <a class="expand-plus collapsed" role="button" data-toggle="collapse" href="#shipAdress" aria-expanded="false" aria-controls="shipAdress"></a></h3>

<div class="collapse" id="shipAdress">
.. formulářové prvky
</div>

Zatím to dělám tak, že na začátek formuláře přidávám checkbox a validuji prvky pokud je checkbox zaškrtnutý, ale rád bych se tohoto checboxu zbavil

$form->addCheckbox('delivery_address', 'Poslat na jinou adresu');

       $form->addText('delivery_name','Jméno')
           ->addConditionOn($form['delivery_address'], Form::EQUAL, TRUE)
           ->setRequired('Zadejte jméno u dodací adresy');
filsedla
Člen | 101
+
0
-

Podle mě se pokoušíš udělat něco, co je nelogické, a nejde to jiným způsobem, než jak to už máš.

Boostrap Collapse chápu jako způsob jak vizuálně skrýt něco na stránce. Uživatel si to může přepínat. Jestli je to ale skryté nebo otevřené v okamžiku odesílání formuláře by nemělo mít vliv na logiku.

Validace v nette formuláři na serveru potřebuje nějak dostat informaci, jestli se mají skrývací pole validovat. Pokud chceš nutně zrušit checkbox, nahraď ho hidden polem, které budeš přepínat pomocí js (nevím, jak to udělat spolehlivě).

andros
Člen | 145
+
0
-

Díky za radu. Checkbox jsem nahradil hidden polem a u collapse jsem nastavil události na zobrazení/skrytí. Takže to funguje jak potřebuji.