Změna atributu disabled na základě addConditionOn()

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

Potřeboval bych při vypsání formuláře mít checkbox disabled a při vybrání určité položky v selectboxu tento checkbox enablovat. Dá se to bez pomocí JS? Kde by to mohlo vypadat cca takto:

<?php
$form->addSelect('id_typ', 'Kategorie článku:', array('' => 'Vyber kategorii', 1 => 'Aktuality', 2 => 'Připravujeme', 3 => 'Proběhlo'))
             ->getControlPrototype()->onchange('enablujChB(this.value);');
?>

Já bych raději nechtěl zanášet další vazby na JS, u kterých bych musel hlídat případné změny.

<?php
$form->addSelect('id_typ', 'Kategorie článku:', array('' => 'Vyber kategorii', 1 => 'Aktuality', 2 => 'Připravujeme', 3 => 'Proběhlo'))
	->skipFirst()
	->addRule(Form::FILLED, 'Je třeba vybrat kategorii.');
$form->addCheckbox('prihlaseni', 'Povolit přihlášení k akci:')
	->setDisabled()
	->addConditionOn($form['id_typ'], Form::EQUAL, 2)
		->setDisabled(FALSE);
?>
visitor
Člen | 22
+
0
-

Jo asi to z příspěvku nevyznělo. Druhý kód nefunguje a stačila by mi odpověď, zda to jde takto řešit a nebo nejde. Děkuji.

Lopo
Člen | 277
+
0
-

bez JS to automaticky asi nespravis

pritom do onchange by som to daval az po priradeni selectu aj CB do formu asi takto nejako:

$form['id_typ']->getControlPrototype()->onchange=("$('#".$form['prihlaseni']->getHtmlId()."').attr('disabled', false)");
David Grudl
Nette Core | 8174
+
0
-

V tuto chvíli to řešit nejde, ale je v plánu něco takového (za použití vlastního JS) umožnit.

visitor
Člen | 22
+
0
-

@Lopo: Jo to samozřejmě funguje, jak jsem tušil. Dík.

@David Grudl: Jak to myslíš? Vždyť řešit to za použití vlastního JS to jde již dneska.