Vlastní nastavení pravidla RANGE závislé na předchozích hodnotách formuláře

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

Zdravím,

mám obdobný formulář, u kterého mám dva text inputy, do kterých vkládám čísla, MIN a MAX. A ve třetím text inputu bych chtěl provést validaci, aby šla zadat pouze hodnota z rozsahu 0 až (MAX – MIN), je možné to napsat nějakým takovým způsobem?

Děkuji za rady

$form->addText('max');
$form->addText('min');
$form->addText('value')
    ->addRule($form::RANGE, 'from %d to %d', array(0, $form['max'] - $form['min']));

Editoval James (20. 4. 2015 16:17)

David Matějka
Moderator | 6445
+
0
-

imho by mohlo fungovat to, co pouziva @mrtnzlml pro zavisle select boxy: http://www.zeminem.cz/…t-select-box, zhruba

$this[$name] = $form;

$form->addText('max');
$form->addText('min');
$form->addText('value')
    ->addRule($form::RANGE, 'from %d to %d', array(0, $form['max']->value - $form['min']->value));

Ale dost mozna to rozbije javascriptovou validaci. Takze bych radeji doporucil vlastni validacni pravidlo:

->addRule(function ($control) use ($form) {
	return Nette\Utils\Validators::isInRange($control->value, [0, $form['max']->value - $form['min']->value]);
}, '....!')