pripojenie JS za Control

před 10 lety

Lopo
Člen | 287
+
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)

před 10 lety

Honza Marek
Člen | 1674
+
0
-

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

před 10 lety

Lopo
Člen | 287
+
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