pripojenie JS za Control
- Lopo
- Člen | 277
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
Neni lepší si prostě přidat k formulářovému prvku třídu datepicker a skript mít externě?
- Lopo
- Člen | 277
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