Validace pouze jedne vybrane moznosti

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

Ahoj. Mam formular pro znovu-poslani hesla – uzivatel si muze vybrat, zda chce vlozit email nebo login… podle radiobuttonu se zobrazi prislusny input..

  • pri validaci to ale kontroluje oba inputy a ja potrebuji aby to validovalo pouze ten vybrany (zobrazeny) … jak na to ?
  • a jak take co nejelegantneji udelat aby se submit button zobrazil az po vybrani z radiobuttonu ? neco jsem zkousel, ale prislo mi to prasoidni:) btw. zpracovava se to oboji stejnou funkci – nepotrebuji ruzne submity

dikes

       $form = new NAppForm;

        $radios = array(
            '1' => ' svoje přihlašovací jméno',
            '2' => ' svůj registrační email',
        );

        $form->addGroup();
        $form->addRadioList('knowledge', 'Znám: ', $radios);
        $form['knowledge']->addCondition(NForm::EQUAL, 1)
                          ->toggle('loginBox'); // toggle div #login
        $form['knowledge']->addCondition(NForm::EQUAL, 2)
                          ->toggle('emailBox'); // toggle div #email

        $form->addGroup() // login
             ->setOption('container', NHtml::el('div')->id('loginBox'));
        $form->addText('login', 'Přihlašovací jméno:', 30)
             ->addRule(NForm::FILLED, 'Zadej prosím přihlašovací jméno.');

        $form->addGroup() // email
             ->setOption('container', NHtml::el('div')->id('emailBox'));
        $form->addText('email', 'Registrační email:', 30)
             ->addRule(NForm::FILLED, 'Zadej prosím e-mail')
             ->addRule(NForm::EMAIL, 'Zadej prosím e-mail ve správném tvaru'); // ... then check email

        $form->addGroup();
        $form->addSubmit('save', 'Vytvořit heslo');
Čelo
Člen | 42
+
0
-

Pokud se nepletu, tak musíš tu podmínku dát i před ta pravidla.

<?php
$form->addText('email', 'Registrační email:', 30)
      ->addConditionOn($form['knowledge'],NForm::EQUAL,2)
      ->addRule(NForm::FILLED, 'Zadej prosím e-mail')
      ->addRule(NForm::EMAIL, 'Zadej prosím e-mail ve správném tvaru'); // ... then check email

?>
koren
Člen | 59
+
0
-

funguje skvele – diky

a btw zobrazovani submit buttonu jsem vyresil takhle:

$form['knowledge']->addCondition(NForm::EQUAL, array(1,2))
                  ->toggle('submitBox'); // toggle div #submitBox