Formulář v modalu se neodesílá ajaxem (nette.ajax.js)

monty
Člen | 66
+
0
-

Ahoj.

Skrze veškerou dokumentaci i forum jsem nebyl schopen vyřešit následující problém.

Používám nette.ajax knihovnu.

Přes handle načítám dynamicky na stránku obsah modal popup okna a pokud mám v okýnku formulář, neodesílá se mi přes ajax a stránka se reloadne.

Změnil jsem formSelector

<script>
	$(function() {
		$.nette.ext('init').formSelector = 'form.ajax, .modal-content form.ajax';
		$.nette.init();
	});
</script>

…který zdá se funguje, jak má, po vyzkoušení na „ne-append-nutém“ obsahu.

Netuší prosím někdo, kde by mohla být chybka?

Díky
Petr

CZechBoY
Člen | 3608
+
+2
-

Udělej si extension, která po přijetí tvýho snippetu zavolá $.nette.load().

Andy3
Člen | 15
+
+1
-

Ahoj, komentar neni primo na tento problem, ale na to co potom nastane.

Co se tyce formularu v modalech, tak se tomu vyhni, pokud opravdu nemusis. Jinak se dostanes to pekneho pekla.

Duvod je ten jak funguje Nette. Priklad, potrebuji zobrazi modal potom co uzivatel pridal neco do kosiku. Neni problem. V privnim callbaku pridam do kosiku a kdyz je vse OK pusti se druhy callback a zobrazi se modal.

Prolem nastava, kdyz je v tom modalu zase formular a ty ho odesles napr: frm-product-123-upsale-submit. Nette zacne hledat komponetu: Product, ktera ma dite 123(Multiplier) a to ma dite Upsale, ale ona tam neni proteze, se vyinstacovava az pri pridani do kosiku.

Reseni jsou dve. Jak ma asi kosik.cz co jsem vypozoroval. Ty mas ten modal vyzdy v presenteru prevyinstancovany, ale nerendrujesho(nemam otestovane, ale potom by se ten pozadavek frm-product-123-upsale-submit vysle, tak by na ten modal mel dostat)

Ja puzivam persisteni parametry. S odeslanim formulare v modalu odesilam i nejaky parameter a pokud ho presenter najde, tak predvyinstancuje dane komponenty, aby se na ne pozadavek dostal. Ale persisteni paramety: dobry sluha, ale zly pan, a lepsi se tomu vyhnout.

monty
Člen | 66
+
0
-

CZechBoY napsal(a):

Udělej si extension, která po přijetí tvýho snippetu zavolá $.nette.load().

Stokrát díky :)

monty
Člen | 66
+
0
-

Andy3 napsal(a):

Ahoj, komentar neni primo na tento problem, ale na to co potom nastane.

Co se tyce formularu v modalech, tak se tomu vyhni, pokud opravdu nemusis. Jinak se dostanes to pekneho pekla.

Duvod je ten jak funguje Nette. Priklad, potrebuji zobrazi modal potom co uzivatel pridal neco do kosiku. Neni problem. V privnim callbaku pridam do kosiku a kdyz je vse OK pusti se druhy callback a zobrazi se modal.

Prolem nastava, kdyz je v tom modalu zase formular a ty ho odesles napr: frm-product-123-upsale-submit. Nette zacne hledat komponetu: Product, ktera ma dite 123(Multiplier) a to ma dite Upsale, ale ona tam neni proteze, se vyinstacovava az pri pridani do kosiku.

Reseni jsou dve. Jak ma asi kosik.cz co jsem vypozoroval. Ty mas ten modal vyzdy v presenteru prevyinstancovany, ale nerendrujesho(nemam otestovane, ale potom by se ten pozadavek frm-product-123-upsale-submit vysle, tak by na ten modal mel dostat)

Ja puzivam persisteni parametry. S odeslanim formulare v modalu odesilam i nejaky parameter a pokud ho presenter najde, tak predvyinstancuje dane komponenty, aby se na ne pozadavek dostal. Ale persisteni paramety: dobry sluha, ale zly pan, a lepsi se tomu vyhnout.

Ahoj.
Jo, máš pravdu, že na práci s modaly Nette šikovný moc není. Ale v dnešní době zhejčkanejch uživatelů se snažím dělat dynamicky všechno, co jenom trošku jde.
Díky za tip ;)

doomy
Člen | 1
+
0
-

CZechBoY napsal(a):

Udělej si extension, která po přijetí tvýho snippetu zavolá $.nette.load().

Díky!!

tohle byl šílenej bolehlav