Autor Zpráva
tomyx007
Profil
Dobrý den,
prosím o radu mám formulář, kde se dynamicky natahují jednotlivé produkty od výrobců do 3 skladů, těchto výrobků je jednou 10, pak 7 atd. po různu...Snažím se vymyslet javascriptovou funkci, která by po změmě množství jednitlivého zboží přepočítala výslednou cenu. Doposud jsem došel k tomuto řešení, ukázka pro jednoho výrobce:
<script style="text/javascript">
  function calculatePrice(idVyrobce) {
  
    if (idVyrobce == "vyrobce_1") {
      var vyslednaCena = document.getElementById("cena_vyr1001").value * document.getElementById("ob1_vyr1001").value + document.getElementById("cena_vyr1001").value * document.getElementById("ob2_vyr1001").value + document.getElementById("cena_vyr1001").value * document.getElementById("ob3_vyr1001").value + document.getElementById("cena_vyr1002").value * document.getElementById("ob1_vyr1002").value + document.getElementById("cena_vyr1002").value * document.getElementById("ob2_vyr1002").value + document.getElementById("cena_vyr1001").value * document.getElementById("ob3_vyr1002").value + document.getElementById("cena_vyr1003").value * document.getElementById("ob1_vyr1003").value + document.getElementById("cena_vyr1003").value * document.getElementById("ob2_vyr1003").value + document.getElementById("cena_vyr1003").value * document.getElementById("ob3_vyr1003").value; 

   document.getElementById("vyrobce_1").innerHTML =   vyslednaCena;
    }
  
  }
  </script>
    <form action="" method="post">
    <table>
     <tr>
        <td>
           Nazev vyrobku
        </td>
        <td>
           cena vyrobku
        </td>
        <td>
          mnozstvi na sklade A
        </td>
        <td>
          mnozstvi na sklade B
        </td>
        <td>
          mnozstvi na sklade C
        </td>
     </tr>
     <tr>
        <td>
           vyrobek 1
        </td>
        <td>
           <input type="text" id= "cena_vyr1001" name="cena_vyr1001" value="100" disabled />
        </td>
        <td>
          <input type="text" id="ob1_vyr1001" name="ob1_vyr1001" value="36" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob2_vyr1001" name="ob2_vyr1001" value="10" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob3_vyr1001" name="ob3_vyr1001" value="12" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
     </tr>
     <tr>
       <td>
           vyrobek 2
        </td>
        <td>
           <input type="text" id="cena_vyr1002" name="cena_vyr1002" value="150" disabled/>
        </td>
        <td>
          <input type="text" id="ob1_vyr1002" name="ob1_vyr1002" value="22" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob2_vyr1002" name="ob2_vyr1002" value="34" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob3_vyr1002" name="ob3_vyr1002" value="2" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
     </tr>
     <tr>
       <td>
           vyrobek 3
        </td>
        <td>
           <input type="text" id="cena_vyr1003" name="cena_vyr1003" value="22" disabled/>
        </td>
        <td>
          <input type="text" id="ob1_vyr1003" name="ob1_vyr1003" value="1" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob1_vyr1003" name="ob2_vyr1003" value="2" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
        <td>
          <input type="text" id="ob1_vyr1003" name="ob3_vyr1003" value="4" onKeyUp="calculatePrice('vyrobce_1');"/>
        </td>
     </tr>
     <tr>
      <td colspan="5" align="right">vysledna cena: <span id="vyrobce_1">14554</span></td>
     </tr>
    </table>
   </form>

Jenomže tenhle javascript to počítá staticky :( což nejde použít když se mění počet položek od výrobce dynamycky. Děkuju za každou radu
AM_
Profil
Jenomže tenhle javascript to počítá staticky :(
????

celé je to trochu zvláštní, cena se počítá tak, že se násobí množství na všech 3 skladech cenou výrobku?
Navíc nechápu - mění se dynamicky? když se něco mění, je to dynamické, když se to nemění, je to statické :)
počet výrobků zřejmě budeš muset natáhnout do dokumentu přes server-side skript (PHP?) do stránky, předpokládám, že jsou uložené v nějaké databázi nebo tak něco.
tomyx007
Profil
Ano, cena se nasobi mnozstvim na vsech trech skladech, data jsou natazena z databaze, pres php zobrazeny, cena je sice staticka, ale mnozstvi zbozi na skladech A,B,C se meni a pak se meni vysledna cena. Je to tak, ze mohu zmenit mnozstvi nejakeho vyrobku na sklade a hned vydim, kolik by me to stalo a pak bych dal odeslat objednavku na doplneni skladu...
AM_
Profil
ale vždyť to takhle funguje, když změníš číslo v daném input poli, které určuje počet výrobků, ta funkce to s ním už přepočítá :)
přece je blbost, aby javascript počítal s tím číslem, které bylo v tom inputu předtím, to ani nejde... pokud se ti nic nepřepočítává, máš zřejmě v javascriptu chybu

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: