Ajaxové odeslání formuláře OnKeyUp
- Morfeo21
- Člen | 35
Ahoj, s Nette a jQuery teď začínám a potřebuju ajaxově odeslat formulář pokaždé, když se změnít hodnota jakéhokoliv inputu. Funguje mi to neajaxově a nemůžu přijít na to, jak to zajaxovatět.
Formulář:
<?php
public function createComponentFilterForm()
{
$form = new NAppForm();
$form->getElementPrototype()->class('ajax');
$form->addText('id', '', 4, 50)->getControlPrototype()->onkeyup("$(this).ajaxSubmit();");
$form->addText('ev_cis', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('nazev', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('vyr_nazev', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('cena', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('nakupni_cena', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('procenta', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('na_sklade', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('stat_nazev', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->addText('zobrazovat', '', 4, 50)->getControlPrototype()->onkeyup("submit();");
$form->onSubmit[] = callback($this, 'processFilterForm');
return $form;
}
?>
Šablona:
<tr>
{$filterForm->render('begin')}
<td>{$filterForm['id']->control}</td>
<td>{$filterForm['ev_cis']->control}</td>
<td>{$filterForm['nazev']->control}</td>
<td>{$filterForm['vyr_nazev']->control}</td>
<td>{$filterForm['cena']->control}</td>
<td>{$filterForm['nakupni_cena']->control}</td>
<td>{$filterForm['procenta']->control}</td>
<td>{$filterForm['na_sklade']->control}</td>
<td>{$filterForm['stat_nazev']->control}</td>
<td>{$filterForm['zobrazovat']->control}</td>
{$filterForm->render('end')}
</tr>
Skript:
<script type="text/javascript">
$("form.ajax").live("submit", function () {
$(this).ajaxSubmit();
return false;
});
</script>
Mám pocit, že chyba bude někde v někde v jQuery, ale opravdu si už nevím rady … díky moc za pomoc!
- jtousek
- Člen | 951
assassik napsal(a):
nebylo by lepší místo všude psát onkeyup, použít:
<script> $("form.ajax input").live("keyup", function(){ $(this).ajaxSubmit(); }); </script>
// ted přesně nevim jestli jde na jednotlivých prvcích takhle volat
.ajaxSubmit()
I kdyby ne tak tohle by jít mělo:
$(this).closest('form').ajaxSubmit();
- Morfeo21
- Člen | 35
Odstranil jsem OnKeyUp eventu z jednotlivych inputu a nahradil jsem to kodem
<script type="text/javascript">
$("form.ajax input").live("keyup", function () {
$(this).closest('form').ajaxSubmit();
});
</script>
Bohuzel se ta funkce ale nikdy nespusti :-/ Nevim cim to …
Editoval Morfeo21 (16. 10. 2010 15:42)
- Morfeo21
- Člen | 35
gmvasek napsal(a):
Jediné co mě napadá… je submit() definovaná funkce?
Submit jsem nijak nedefinoval, myslel jsem, ze pri submit() se zavola funkce
<script type="text/javascript">
$("form.ajax").live("submit", function () {
$(this).ajaxSubmit();
return false;
});
</script>
Predpoklad to byl ale asi spatny …
- assassik
- Člen | 43
http://jsbin.com/acaxu4/4/edit
Tohle funguje, ale chtělo by to pečlivě vybrat prvky, kterým se pak přidá událost onkeyup.
- Morfeo21
- Člen | 35
assassik napsal(a):
http://jsbin.com/acaxu4/4/edit
Tohle funguje, ale chtělo by to pečlivě vybrat prvky, kterým se pak přidá událost onkeyup.
Nefunguje mi to :( Funguje mi udalost OnKeyUp, ale funkce live(„submit“) na tom formulari uz se nespusti :( Netusim proc. Kod mam stejny jaky jsi poslal (samozrejme s upravenym jmenem inputu).