Zrušení validace po stisku submit tlačítka

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

Ahoj, jak prosím zruším FILLED validaci při odeslání formuláře určitým tlačítkem ?

Mám formulář se dvěma tlačítky, „uložit“, „další“. Po stisku „další“ musí proběhnout klasická validace, po stisku „uložit“ proběhne validace jen pokud je pole vyplněno.

Příklad:

$this->addText('name', 'Název projektu:')
  ->addRule(NForm::FILLED, 'Vyplňte, prosím, název projektu.')
  ->addRule(Form::MAX_LENGTH, 'Název projektu může mít maximálně %d znaků.', 100);
  ->addConditionOn($this['saveSubmit'], NForm::SUBMITTED)
      ->addRule(~NForm::FILLED, 'Vyplňte, prosím, název projektu.')

Používám live-validaci, po odeslání „save“ tlačítkem pokud je pole prázdné, je jakoby stále přítomné pravidlo „FILLED“ (pole je obarveno červeně), po kliknutí kamkoliv na prohlížeč toto červené pole zmizí.

Vypadá to jakoby pole „name“ mělo vždy nastaveno pravidlo FILLED i po odeslání tlačítkem „save“, ale až teprve po kompletním načtení stránek už ne.

Nebo je nějaký způsob jak pomocí elseCondition(), endCondition() tohle vyřešit ? Zatím se mě to nepodařilo.

studna
Člen | 181
+
0
-

Co to zkusit obráceně – pokud uživatel klikne na další, tak je třeba, aby pole bylo vyplněné.

$this->addText('name', 'Název projektu:')
//  ->addRule(NForm::FILLED, 'Vyplňte, prosím, název projektu.')
  ->addRule(Form::MAX_LENGTH, 'Název projektu může mít maximálně %d znaků.', 100);
  ->addConditionOn($this['NEXTSubmit'], NForm::SUBMITTED)
      ->addRule(NForm::FILLED, 'Vyplňte, prosím, název projektu.')

Ale nejsem si jistý, just idea. :)

Editoval studna (5. 10. 2012 14:47)

Saurian
Člen | 28
+
0
-

idea není špatný :)

Tohle samozřejmě funguje, nefunguje pak ale ta live-validace pravidla „filled“ při vyplňování.

Trochu tam jde i o to, že ten formulář je hodně dlouhý a pokud by toto pravidlo nemělo být zobrazováno již v době vyplňování, zobrazí se až po odeslání formuláře jako addError() a to je pak hodně dlouhý seznam, nevypadá to dobře.