zaskrtnuty checkbox a nasteveni onChange

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

Zdravim,
mam mensi problem s formulari. Potrebuji mit zaskrtnuty checkbox a mit u nej onChange event. Ale nedari se mi. Kdyz vyhodim pridani onChange(), tak to jde. Nevite nekdo co s tim?

<?php
final class Backend_UserProfileForm extends Form
{
	public function __construct($name, $parent = null)
	{
		parent::__construct($name, $parent);

	        $this->addCheckbox('keepPassword', 'Ponechat heslo bez změny')
			->getControlPrototype()->onChange('alert("onChange event")')
			->setValue(1);
	}
}
?>
jasir
Člen | 746
+
0
-

Ten kód jsem zkoušel, mě funguje (poslední revize). Co přesně to dělá?

Editoval jasir (6. 8. 2009 0:19)

hurvajs
Člen | 86
+
0
-

Ted jsem stahnul posledni revizi (presne 0.9 dev – rev. 475 ze dne 4. 8. 2009) a nejde to. Checkbox se proste nezaskrtne. Chyba tam zadna neni. Kdyz prohodim radky s metodami setValue() a getControlPrototype() tak to skonci na tom, ze metoda setValue() nevraci fluent interface.

LM
Člen | 206
+
0
-
$this->addCheckbox('keepPassword', 'Ponechat heslo bez změny')
	->setValue(1);
$this['keepPassword']->getControlPrototype()
	->onChange('alert("onChange event")');

Protože se volá getControlPrototype() což už nevrací checkbox, ale html element, takže se setValue() volá nad ním.

jasir
Člen | 746
+
0
-

Aha, tobě jde o to zaškrtnutí… :-) Tak jo, je tam chyba, getControlPrototype() vrací objekt Html, pak už ti fluent nebude fungovat. Takže takhle:

<?php
$this->addCheckbox('keepPassword', 'Ponechat heslo bez změny')
	->getControlPrototype()->onChange("alert(\"onChange event\")");
$this['keepPassword']->setValue(1);
?>

Editoval jasir (6. 8. 2009 9:26)

hurvajs
Člen | 86
+
0
-

Funguje. Super. Diky moc obema :)