Live form validation – Vlastní vykreslení validace
- JDC
- Člen | 19
Zdravím. Když vykresluji formulář „ručně“ pomocí latte maker, rozhodí se mi celá live validace formuláře tak, že se mi zprávy nezobrazují vedle formulářového prvku, ale až někde pod celým formlářem. Když formulář vykresluji klasickým způsobem pomocí {control nazevFormulare}, validace funguje v pohodě a vše se vykresluje jak má. Používám tento addon: live-form-validation for Nette 2.0
Mám tento latte kód:
<div class="page-obsah">
<div n:foreach="$flashes as $flash" class="flash {$flash->type}">{$flash->message}</div>
{form bleskForm}
{control $form errors}
{label text /} <span class=error></span><br />
{input text}<br /><br />
{input hasLink} Přilinkovat k bleskovce článek:<br />
{input url}<br />
{input pridat}
{/form}
</div>
Experimentoval jsem s tím různě, hledal i tady na fóru, ale nějak se mi nepovedlo najít řešení, které by řešilo můj problém. Předpokládám, že se do toho má nějaké latte makro přidat, které by zajistilo vykreslování zpráv validace vedle prvků, nebo nějak patřičně upravit javascript toho addonu.
Nemá někdo z vás už s tímto zkušenost a neporadil by mi, jak
s tímhle zatočit?
Předem díky a pokud tu s tím spamuju, někde se to tady už řešilo,
omlouvám se za duplicitní vlákno. I když jsem prohledával fórum, nějak
jsem nenašel, co by řešilo můj problém.
Editoval JDC (5. 5. 2013 12:58)
- xciza
- Člen | 194
Ahoj, mám stejná problém jako JDC. Form vykresluju manuálně a errory pomocí
{control $form errors}
ale když smažu tohle a k inputu přidám
<span id="IDPRVKU_message" class="form-error-message"></span>
Tak se mě validace nevykresluje vůbec. Něco se za ten rok změnilo?
Díky
EDIT: V mozille v konzoly to píše tuto chybu:
TypeError: rule.op is undefined
var rule = rules[id], op = rule.op.match(/(~)?([^?]+)/);
Editoval xciza (30. 4. 2014 12:32)
- Endrju
- Člen | 147
Ahoj, taky se připojuji k příspěvku přede mnou.
Ať už vykresluji manuálně nebo ne, vidím v konzoli firefoxu chybu:
TypeError: rule.op is undefined live-form-validation.js:402
395: Nette.toggleControl = function(elem, rules, firsttime) {
396: rules = Nette.getRules(rules, elem);
397: var has = false, __hasProp = Object.prototype.hasOwnProperty, handler = function() {
398: Nette.toggleForm(elem.form);
399: };
400:
401: for (var id in rules) {
402: var rule = rules[id], op = rule.op.match(/(~)?([^?]+)/);
403: rule.neg = op[1];
404: rule.op = op[2];
405: rule.condition = !!rule.rules;
406: if (!rule.condition) continue;
Pokud pak formulář odešlu, zobrazí se vedle jednotlivých prvků chyby
zpracované na straně serveru (JS validace neproběhne vůbec) a do konzole
přiskoční další řádek s chybou:
TypeError: rule.op is undefined live-form-validation.js:215
212: Nette.validateControl = function(elem, rules, onlyCheck) {
213: rules = Nette.getRules(rules, elem);
214: for (var id in rules) {
215: var rule = rules[id], op = rule.op.match(/(~)?([^?]+)/);
216: rule.neg = op[1];
217: rule.op = op[2];
218: rule.condition = !!rule.rules;
219: var el = rule.control ? elem.form.elements[rule.control] : elem;
Co s tím?
Jediné co jsem udělal je, že jsem nalinkoval
live-form-validation.js
do layoutu, nic víc (jiné instrukce na
stránce pluginu nevidím).
Editoval Endrju (3. 10. 2014 12:01)