Problém s validací formuláře
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Neo-Mike
- Člen | 22
Zdravím, chtěl bych vás poprosit o radu a vysvětlení. Mám jednoduchý formulář pro přihlášení a mám u něj problém s validací.
$form = new Form;
$form->addProtection('Vypršel časový limit, odešlete formulář znovu');
$form->addText('username', 'Uživatelské jméno: ')
->setRequired('Zadejte prosím vaše uživatelské jméno.')
->addRule(Form::MIN_LENGTH, 'Uživatelské jméno musí být delší než %d znaků.', 5);
$form->addPassword('password', 'Heslo:')
->setRequired('Zadejte prosím vaše heslo.')
->addRule(Form::MIN_LENGTH, 'Heslo musí být delší než %d znaků.', 5);
$form->addCheckbox('remember', ' Zapamatuj si mě');
$form->addSubmit('send', 'Přihlásit');
$form->onSuccess[] = array($this, 'formSucceeded');
Nastávají u mě dvě situace:
- validace funguje, ale validační hlášky se zobrazují ve vyskakovacím okně – což se mi ne tak úplně líbí.
- validace funguje jen z půlky. A to sice, že pole: username a password nesmějí být prázdné, ale pravidla přidané pomocí addRule() se už neberou v potaz. V tomto případě se validační hlášky vypisují hned u polí formuláře. Čehož bych rád docílil trvale. Zároveň musím do šablony, která vykresluje daný formulář, přidat:
{block head}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="{$basePath}/assets/js/bootstrap.min.js"></script>
{/block}
Netušíte proč dochází k takovému chování a jak nastavit validační hlášky hned u polí formuláře?
- David Matějka
- Moderator | 6445
Nevim, ktery vyskakovaci okno myslis, bud se muze jednat o
netteForms.js
validaci, ktera to zobrazuje v alert oknu, nebo html 5 validaci,
ta se necha vypnout pridanim novalidate
atributu k formulari
ale pravidla přidané pomocí addRule() se už neberou v potaz.
jako ze muze byt jmeno/heslo kratsi nez 5 znaku a projde to?