Autor | Zpráva | ||
---|---|---|---|
tee.vee Profil |
#1 · Zasláno: 29. 11. 2012, 13:57:53
Zdravím, řeším jeden úkol, jen bych ho potřeboval pomoci dotáhnout do konce.
Z databáze si tahám takový objednávkový formulář, ve kterém mám input s cenou za kus a select s vybraným množstvím. Přepočítané množství každé pložky bych si chtěl zobrazit samostatně vedle. Používám: <script type="text/javascript" language="JavaScript"> function change() { baleni1 = document.getElementById("id[1][baleni]").value; kusy1 = document.getElementById("id[1][kus]").value; result = baleni1 * kusy1; document.getElementById("id[1][prepocteno]").value = result; } </script> <input type="text" name="baleni" value="500" id="id[1][baleni]" /> <select name="kus" id="id[1][kus]" onclick="change()"> <? for($i=0;$i<=25;$i++){ echo "<option value=\"".$i."\">".$i." ks</option>\n"; } ?> </select> <input type="text" id="id[1][prepocteno]" size="5" name="prepocteno"> V tomto případě script cenu skutečně přepočítá jak potřebuju - v tom je funkční. Ale když budu těch položek mít třeba 30? nebo pokaždé jiný počet položek? Přeci ten javascript nezkopíruju třeba 50x a jen tam přepíšu jiný vstupní element...to přeci není efektivní řešení. :) <script type="text/javascript" language="JavaScript"> function change1() { baleni1 = document.getElementById("id[1][baleni]").value; kusy1 = document.getElementById("id[1][kus]").value; result = baleni1 * kusy1; document.getElementById("id[1][prepocteno]").value = result; } function change2() { baleni2 = document.getElementById("id[2][baleni]").value; kusy2 = document.getElementById("id[2][kus]").value; result2 = baleni2 * kusy2; document.getElementById("id[2][prepocteno]").value = result2; } </script> ... ATP Myslel jsem, že bych tam přidal nějaký for cyklus, který by mi do vstupního elementu měnil čísla, ale to už nefungovalo vůbec, a nebo to bralo pouze a furt jen první řádek k přepočtu... |
||
Joker Profil |
tee.vee:
„Přeci ten javascript nezkopíruju třeba 50x a jen tam přepíšu jiný vstupní element...to přeci není efektivní řešení. :)“ Správná úvaha, to by byl opravdu nesmysl. Dejte to, co chcete přepočítat, jako vstupní parametr té funkce. Třeba: change(idPrvku) { … baleni1 = document.getElementById("id["+idPrvku+"][baleni]").value; … } Omylem jsem to odeslal když to ještě nebylo hotové |
||
peta Profil |
#3 · Zasláno: 29. 11. 2012, 14:50:41
function change(n) { baleni1 = document.getElementById("id["+n+"][baleni]").value; //atd pro ostatni } ... <select name="kus" id="id[1][kus]" onclick="change(1)"> "Myslel jsem, že bych tam přidal nějaký for cyklus, který by mi do vstupního elementu měnil čísla, ale to už nefungovalo vůbec, a nebo to bralo pouze a furt jen první řádek k přepočtu... " Nerozumim. Potrebujes prepocitat jen konkretni polozky pro id[1], id[2] atd ne vsechny naraz, tak, nac cyklus? ten select ovlivnuje jen jeden radek nebo vic? A proc tam mas select a ne input? |
||
tee.vee Profil |
No ono jde o to, že mi vyjede třeba 50 položek (1 položka jako jeden řádek = údaj o balení + údaj o navoleném množství). Tzn: vyjede mi 50 řádků, kde budu mít 50 různých položek a já si vyberu jen ty, které pořebuji. Takže si vyberu položku číslo 2 (a selectem z roletky vyberu třeba 3 kusy) a u tohoto řádku bych chtěl aby mi to ukázalo kolik to je celkem (aby se mi vynásobilo balení * počet ze selectu). Pak si vyberu třeba 30 položku, a nastavím že chci třeba 5 kusů...tak aby se to zase přepočítalo.
Jdu to zkusit, zatím díky za radu pánové Super, to je přesně to, co potřebuji! :) děkuji |
||
Časová prodleva: 11 let
|
0