Onblur akce po změně inputu

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

Zdravím, řeším tento problém. V košíku mám objednávku. Ta obsahuje produkty. Ty já potřebuji vypsat do tabulky, kde bude každý produkt znázorňovat jeden produkt. V každém řádku bude moct změnit množství kusů daného produktu a smazání daného produktu.
Smazání daného produktu asi bude nějaký n:href akce které předám id produktu a kde pak presenter zavolá metodu z objektu objednávky, pak proběhne redirect a uživatel uvidí přepočítanou objednávku.

Problém ale nastává u změny množství kusů produktů. Jak je nejlépe řešit to, když uživatel změní data v inputu tak se vyvolá nějaká action metoda v presenteru které se předá id produktu a počet kusů (nějaká obdoba onBlur= funkce v html tagu). Pak se odešle do presenteru (odkud se zavolá metoda objednávky která to vše aktualizuje) a pak se provede redirect (po kterém se inicializuje objekt objednávky s novými daty a bude vše přepočítané správně. Dělat pro každý produkt formulář mi přijde zbytečné (navíc nevím jak to řešit když nevím kolik produktů tam bude a každý asi musí mít nějaké idčko podle kterého poznám který produkt mám změnit- případně všechny id produktů s příslušnými počty nahrát do polí ale to mi přijde moc komplikované a řekl bych že musí existovat elegantnější řečení)

Mohl by mi někdo poradit jak tohle řešit? (případně dodat jak by řešil to smazání produktu z objednávky- jak říkám, já bych to řešil nějakou metodou actionRemoveAcrticle($articleId) v presenteru).

Darkling
Člen | 35
+
0
-

Ahoj,
pro vytváření více komponent stejného typu, když dopředu nevíš kolik jich bude, se v Nette používá Multiplier (v tvém případě formulář pro aktualizaci počtu produktů), viz https://doc.nette.org/…n/multiplier.

Co se týká onBlur dá se to udělat pomocí javascriptu, třeba nějak takhle jednoduše:

$(".inputCount").blur(function() { // nebo change event
	$(this).closest("form").submit();
});