pripojenie JS za Control

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

asi 2 dni som sa trapil ako vyriesit pripojenie obsluzneho JS hned za <input>
konkretne jQuery funkciu obsluhujucu DatePicker input co je tu v repozitari
hladanim som nasiel 2 rozne riesenia, ani jedno vsak nevyhovuje

  • zapisanie JS do sablony – treba prislusny kod rucne zapisat do sablony, co nieje prave prijemne
  • zapisanie v getControl() pomocou ob_… funkcii – vysledny kod je prehanany cez filter a tak treba v sablone prislusny prvok vkladat pomocou vypnutia filtra – {!$form[‚dpick‘]->control}

po 2 dnoch hrabania sa v zdrojakoch Nette som nasiel jednoduche a ucinne riesenie:
setName() + add()
setName() umoznuje zmenit isEmpty priznak prvku input a tym padom nasledne mu priradit child prvok ktory sa aj vykresli
takze vysledny kod getControl() repozitaroveho datePicker je:

public function getControl()
	{
		$control=parent::getControl();
		$control->class='datepicker';
		$control->value=$this->value;
		$control->setName($control->getName(), false); // enable add()
		$control->add('<script type="text/javascript">
			$(function() {
				$(\'#'.$control->id.'\').datepicker({
					dateFormat: "dd.mm.yy",
					changeMonth: true,
					changeYear: true,
					duration: \'fast\'
					},
				$.datepicker.regional[\'sk\']);
				});
			</script>');
		return $control;
	}

toto riesenie nema problem s viacerymi prvkami v jednom formulari ani pri viacerych formularoch, kedze JS sa vola cez ID prvku
pri viacerych formularoch ale asi bude potrebne mat ich pomenovane

dufam ze som neobjavil ameriku a toto riesenie pomoze aj dalsim

Editoval Lopo (9. 6. 2009 11:05)

Honza Marek
Člen | 1664
+
0
-

Neni lepší si prostě přidat k formulářovému prvku třídu datepicker a skript mít externě?

Lopo
Člen | 277
+
0
-

Honza M. napsal(a):

Neni lepší si prostě přidat k formulářovému prvku třídu datepicker a skript mít externě?

ja som to prave nechcel mat externe … chcel som proste vlozit prvok a nemusiet sa zaoberat este riesenim, ci mam v sablone aj potrebnu JS funkciu … takto aj ked ten prvok odstranim, nemusim hladat, ci to bol jediny datepicker a ci teda mozem alebo nemozem odmazat tu JS funkciu … JS je tam vzdy ked ho treba, ked ho netreba tak tam nieje bez akehokolvek dodatocneho dohladavania, dopisovania/odmazavania