Spuštění javascriptu ve snippetu

- musa
 - Člen | 28
 
Ahoj,
nahrávám si formuláře ajaxově do modálního okna a potřebuji zajistit spuštění validace při submitu (Live validace a nette jquery ajax z doplňků). Validace při submitu se nespustí, protože není validační funkce na tlačítko navázána (javascript ve snippetu nebyl proveden).
Jakým způsobem toto řešíte? Zkoušel jsem jquery evalScripts() v update snippet ale bez valného úspěchu.
Díky za každou radu.

- musa
 - Člen | 28
 
despiq napsal(a):
ja davam do nette jquery po updatu snippetu js ktery chci aby se spustilo pri ajaxu
Diky, neco podobneho uz delam taky, mam v payloadu prvek ‚js‘ na ktery pak zavolam eval. U validace se ale ten js generuje a „jen tak“ se k nemu nedostanu, navic bych to rad i nejak obecne vyresil.

- mkoubik
 - Člen | 728
 
Já mám komponentu, která podle nastavení zobrazuje různé formuláře (obecně komponenty), nebo nic:
<?php
class SettingsComponent extends Control
{
    /** @persistent */
    public $module = null;
    private $form = null;
...
    protected function createComponentForm()
    {
        $this->form = získání komponenty podle persistentnich parametru
        return $this->form;
    }
    public function handleSetModule($module)
    {
        $this->module = $module;
        $this->invalidateControl('settingsComponent');
    }
    public function handleUnsetModule()
    {
        $this->module = null;
        $this->invalidateControl('settingsComponent');
    }
    protected function createTemplate()
    {
        $template = parent::createTemplate();
        $template->setFile(dirname(__FILE__).'/settingsComponent.phtml');
        return $template;
    }
    public function render()
    {
        $this->template->module = $this->module;
        return $this->template->render();
    }
}
<?
(kód je zkrácen, obsahuje složitější logiku pro získávání
komponent)
A šablona:
{snippet settingsComponent}
{if $module !== null}
    <div class="overlay"></div>
    <div class="modal">
        <a href="{link unsetModule!}" class="ajax modal-close">Zavřít</a>
        {widget form}
    </div>
{/if}
{/snippet}
Ve formuláři se mi pak objeví
onsubmit"return nette.validateForm(this)", nenašel jsem, kde je to
definováno, ale funguje to. Další detaily, které by na to mohly mít vliv:
na stránce už jeden formulář je, než se načte ten ajaxový, pak tam jsou
dva (jeden v modálním okně a jeden skrytý). Používám jquery,
jquery.livequery, jquery.nette a jquery.ajaxform.

- Honza Kuchař
 - Člen | 1662
 
A co toto?
{snippet nazev}
<script type="text/JavaScript"> alert("bla"); </script>
{/snippet}
					Editoval honzakuchar (29. 4. 2010 22:32)

- Honza Kuchař
 - Člen | 1662
 
jquery.livequery používám tak nějak automaticky :-) I když je to nějaký ten kb navíc. Ušetří hromadu práce. Opravdu! Hromadu!
Editoval honzakuchar (29. 4. 2010 23:37)