Autor Zpráva
unlucky
Profil
Našel jsem pár řešení na googlu, ale bohužel mi nevyhovují. Obrátil jsem se proto na vás.

Hodnoty mám uložené v sessionu.
$_SESSION['product'][$i]
$_SESSION['price'][$i]

není tam množství, standardní je 1. Množství si zákazník vybere až v košíku.
Situace je taková, jsem v košíku a chci zobrazit celkovou sumu za zboží (libovolný počet - systém generuje inputy s produkty, ceny s hodnotami readonly. Jenom množství lze měnit - default 1).

<input type='text' value='$pr' readonly='readonly' name='itm[]'>
    <input type='text' value='1' name='qty[]'>
    <input type='text' readonly='readonly' value='$price &euro;' name='pri'/>

Chci, aby se zobrazila cena + kdykoli došlo ke změně množství u jakéhokoli zboží. Tu počáteční cenu bych zobrazil v php. Změnu pak přepsat v js
juriad
Profil
A otázka je jaká? Která část z toho, co jsi popsal ti nejde či není jasná?

Pokud je množství input type="text", tak na něj navěš onKeyPress. Pokud je nový obsah inputu číslo, tak jím vynásob cenu produktu a aktualizuj celkovou cenu.
unlucky
Profil
jak získat data z inputu, když neznám celkové množství inputů
_es
Profil
unlucky:
když neznám celkové množství inputů
A to je taký problém ten počet zistiť?
pako
Profil *
document.getElementsByTagName('input')
pripadne formular ma vlastnost elements v ktorom su vsetky prvy formulara
obsluhu udalosti keyup zavesis na formular a sledujes target udalosti, mnozstvo si prevedies na cislo, vynasobis a vlozis do spravneho inputu cez previousSibling
unlucky
Profil
Mám toto, ale nefunguje :P

<script type="text/javascript">

 $('#cart').change(function(){
  var price=0;
  var quantity=0;
  var total=0;
  var nr =document.getElementsByName("number")[0].value; 
  for (var i=0;i<nr;i++){
    price= document.getElementsByName("pri")[i].value;
    quantity= document.getElementsByName("qty")[i].value;
    total+=price*quantity;    
  }
    document.getElementById("totalprice").innerHTML = total;
 }
</script>

<form id='cart'>
<input type='text' name='qty[]'  value ='2'/> <input type='text' name='pri[]'  value ='4'/>
...
<input type='text' name='qty[]'  value ='2'/> <input type='text' name='pri[]'  value ='4'/>
<input type='hidden' name='number' value='5' />
<span id='totalprice'><span>
</form>
Chamurappi
Profil
Reaguji na unluckyho:
document.getElementsByName("pri")[i].value;
Jméno toho políčka není pri, ale pri[]. Hranaté závorky tam z hlediska prohlížeče nemají žádný význam, ten jim dává až něco na straně serveru.
Proč prohledáváš celý document? Metodu getElementsByName vůbec nepotřebuješ, kolekce prvků s name="pri[]" je ve tvém případě v this["pri[]"]. Můžeš samozřejmě zjistit i její length.
unlucky
Profil
zkusil jsem i s hranatými závorkami, ale nefungujou. Jak toto zprovoznit?
Chamurappi
Profil
Reaguji na unluckyho:
Nejprve musíš najít chybu v tom, co děláš. Jakmile ji najdeš, tak ji opravíš… a bude to zprovozněné.
Skript v příspěvku #6 nebude fungovat asi i z toho důvodu, že při spuštění skriptu není ve stránce žádný element s id="cart".
unlucky
Profil
je tam form id="cart"?
Chamurappi
Profil
Reaguji na unluckyho:
Není. Skript se vykonává v okamžiku, kdy se načte, a v tu chvíli nic, co je za ním, ve stránce není.
unlucky
Profil
Chamurappi:
takže umístit za formulářem? Také nejde. CO teď
Chamurappi
Profil
Reaguji na unluckyho:
Teď to vzdám. Ve svých radách chybu nevidím a těžko uhodnu, co sis kde jak pokazil.
unlucky
Profil
uz jsem na to prisel.
chybela zavorka a strednik

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: