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)