Zrušení validace po stisku submit tlačítka
- Saurian
- Člen | 28
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
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
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.