Validace formulářů v nette – live validace
- microcz
- Člen | 62
Ahoj, používám nette 2.1.2, chtěl bych vytvořit form validovaný pomocí js/ajax. Tak aby validace probíhala „živě“, tedy ne jenom po kliknutí na tlačitko.
Přečetl jsem si už názor zde: https://forum.nette.org/…-u-nette-2-1, že tato funkce v nette jaksi chybí.
Stáhl jsem si „Live Form Validation for Nette 2.1“ od autorů „Radek Ježdík, MartyIX, David Grudl, pavelplzak, Robyer“. Ale nějak se mi nedaří (zřejmě dělám něco špatně) validaci rozchodit.
Proto prosím o radu někoho kdo má s live validací zkušenosti, poradíte jak na to? Co mám vložit do main.js, musím něco nastavit ve třídě form?
Editoval microcz (21. 5. 2014 9:23)
- thm
- Člen | 147
Čauves, live validaci používám.
Mělo by stačit nahradit netteForms.js tím skriptem, co jsi stáhnul
(případně ti pošlu to co mám já).
Stačí přidat script do layoutu (já to mám místěné v <head>):
<script src="{$basePath}/js/liveFormValidation.js"></script>
Potom už jenom stačí stylovat třídy, které jsou hezky popsány v tom
skriptu na začátku.
Případné chyby bys měl objevit třeba ve firebugu. Je pravda, že mi to
nedávno, když jsem začínal jiný projekt také nějak nefungovalo.
- microcz
- Člen | 62
Vím, že jsem natvrdlý, ale mohl bych se zeptat čemu mám přiřadit ty třídy?
Samotným elementům?
$form->addPassword('login_password', $strPass)->setRequired($strPassReq)->setAttribute("class", "form-error-message");
Nebo přídavným div/span elementům mezi prvky formuláře?
Editoval microcz (21. 5. 2014 15:02)
- thm
- Člen | 147
Mělo by opravdu jenom stačit přidat skript do šablony (nejčastěji layoutu) a pak už by se mělo liveValidovat. Hlášky by se měly zobrazovat jako <span> za <input>. Skript automaticky mění CSS třídy <input>. Není třeba ručně přidávat žádné třídy formulářovým prvkům.
Například v případě špatně vyplněného <input type=„text“> skript tomuto inputu přidá třídu class=„form-control-error“, takže pak můžeš v CSS nastylovat input.form-control-error { border: 1px solid red; } atd…
Pokud se live validace neděje po připojení skriptu, tak není něco v pořádku, zkontroluj ve firebugu v konzoli.
Editoval thm (24. 5. 2014 10:22)