Ajaxové odeslání formuláře OnKeyUp

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Morfeo21
Člen | 35
+
0
-

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!

Aurielle
Člen | 1281
+
0
-

Jediné co mě napadá… je submit() definovaná funkce?

assassik
Člen | 43
+
0
-

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()

Aurielle
Člen | 1281
+
0
-

Nedá se náhodou ajaxSubmit volat jen na form?

jtousek
Člen | 951
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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).