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
+
0
-

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:

  1. validace funguje, ale validační hlášky se zobrazují ve vyskakovacím okně – což se mi ne tak úplně líbí.
  2. 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
+
0
-

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?

Neo-Mike
Člen | 22
+
0
-

Vyřešeno.

Editoval Neo-Mike (9. 3. 2016 23:32)