Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przeliczenie wartości z kilku pól i wstawienie do
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
artur81
Witam!
Stanąłem przed problemem, którego nie mogę obejść. Dla większości pewenie sprawa błaha jednak dla mnie jako laika w JS nie do przejścia. Mam taki kod (tyle mi się udało do tej pory wypocić.
  1. <script type="text/javascript">
  2. function przelicz_suma() {
  3. gaz=parseFloat(document.wplata.gaz.value);
  4. prad=parseFloat(document.wplata.prad.value);
  5. tel_kom=parseFloat(document.wplata.tel_kom.value);
  6. tel_stac=parseFloat(document.wplata.tel_stac.value);
  7. isko=parseFloat(document.wplata.isko.value);
  8. inne=parseFloat(document.wplata.inne.value);
  9. prowizja=parseFloat(document.wplata.prowizja.value);
  10. var suma;
  11. suma = gaz + prad + tel_kom + tel_stac + isko + inne + prowizja;
  12. var suma_wplat = document.wplata.suma_wplat;
  13. suma_wplat.value += suma;
  14. }
  15.  
  16.  
  17.  
  18.  
  19.  
  20. </head>
  21. <form method="GET" action="wplata_action.php" name="wplata">
  22. <input type = "hidden" name="akcja" value="dodaj">
  23. <input type = "hidden" name="id_wplaty" value=""><table>
  24. <tr><td><font color=black><b>Data wpłaty:</b></font></td><td><input type = "text" name="data_wplaty" size="30" title="Data wpłaty" value="<?php echo $data_przetwarzania ?>" disabled="disabled"></td></tr>
  25. <tr><td><font color=black><b>Wpłacający:</b></font></td><td><input type = "text" name="nazwisko" size="30" title="Nazwisko i imię wpłacającego" value="<?php echo $nazwisko ?>" disabled="disabled"></td></tr>
  26. <tr><td><font color=black><b>Ulica, nr domu i mieszkania:</b></font></td><td><input type = "text" name="ulica" size="30" title="Ulica, nr domu i mieszkania" value="<?php echo $adres ?>" disabled="disabled"></td></tr>
  27. <tr><td><font color=black><b>Miasto:</b></font></td><td><input type = "text" name="miasto" size="30" title="Ulica, nr domu i mieszkania" value="<?php echo $miasto ?>" disabled="disabled"></td></tr>
  28. <tr><td><font color=black><b>Gaz:</b></font></td><td><input type = "text" name="gaz" size="30" title="Gaz" value="0" onChange="przelicz_suma()"></td></tr>
  29. <tr><td><font color=black><b>Prąd:</b></font></td><td><input type = "text" name="prad" size="30" title="Prąd" value="0" onChange="przelicz_suma()"></td></tr>
  30. <tr><td><font color=black><b>Isko:</b></font></td><td><input type = "text" name="isko" size="30" title="Isko" value="0" onChange="przelicz_suma()"></td></tr>
  31. <tr><td><font color=black><b>Telefonia GSM:</b></font></td><td><input type = "text" name="tel_kom" size="30" title="Telefonia GSM" value="0" onChange="przelicz_suma()"></td></tr>
  32. <tr><td><font color=black><b>Telefonia stacjonarna:</b></font></td><td><input type = "text" name="tel_stac" size="30" title="Telefonia stacjonarna" value="0" onChange="przelicz_suma()"></td></tr>
  33. <tr><td><font color=black><b>Inne:</b></font></td><td><input type = "text" name="inne" size="30" title="Inne" value="0" onChange="przelicz_suma()"></td></tr>
  34. <tr><td><font color=black><b>Suma opłat:</b></font></td><td><input type = "text" name="suma_wplat" size="30" title="Suma opłat" value="0" disabled="disabled" style="background:#EEEB7B; font-weight:bold; color:#000000"></td></tr>
  35. <tr><td><font color=black><b>Gotówka:</b></font></td><td><input type = "text" name="kont_gotowka" size="30" title="Gotówka" value="0" ></td></tr>
  36. <tr><td><font color=black><b>Reszta:</b></font></td><td><input type = "text" name="suma_wplat" size="30" title="Reszta" value="0" disabled="disabled" ></td></tr>
  37. <tr><td><font color=black><b>Prowizja:</b></font></td><td><input type = "text" name="prowizja" size="30" title="Prowizja" value="0" disabled="disabled" ></td></tr>
  38. </table><input type="submit" value="Wpłać" title="Wciśnij aby zaakceptować wpłatę"></form>


Chcę osiągnąć coś takiego żeby skrypt umieszczał mi w polu suma_wplat sumę pól gaz, prad, tel_stac, tel_kom, inne, isko. Dodatkowo w polu prowizja ma się znajdować kwota 2,5 przemnożona przez ilość wpłat większych od zera z pól gaz, prad, tel_stac, tel_kom, inne, isko. Wszystko byłoby fajnie jakbym mógł odświeżyć stronę. Bym to proste działanie napisał sobie w php. Z tym że niestety nie mogę, wszystko musi być przeliczone zanim wpis zostanie dodany do bazy. Możecie mi pomóc?
nospor
1)pole suma wplat nie rob disabled, gdyz nie wysle sie ono formularzem. nadaj mu atrybut readonly.
2) nadawaj dla pol rowniez parametr id i do pol dobieraj się tak:
Kod
pole = document.getElementById('idpola');
//i potem normalnie: pole.value

podaje ci poprawione pole suma_wplat. na podobnej zasadzie popraw pozostale:
  1. <input type = "text" name="suma_wplat" id="suma_wplat" size="30" title="Suma opłat" value="0" readonly="readonly" style="background:#EEEB7B; font-weight:bold; color:#000000" />


3)nie dodawaj do pola suma_wplat sumy, tylko ją nadpisuj:

Kod
//....
suma = gaz + prad + tel_kom + tel_stac + isko + inne + prowizja;
var suma_wplat = document.getElementById('suma_wplat');
suma_wplat.value = suma;

//...


ps: z resztą to już chyba sam powinieneś sobie poradzić smile.gif
artur81
Dzięki nospor za odpowiedź, poprawiłem sobie wszystko tak jak napisałeś, fukcja niby działa ale zwraca jakiś dziwny wynik. W polu suma_wplat pojawia się napis

[object][object][object][object][object][object][object]

Cała funkcja wygląda tak
  1. function przelicz_suma() {
  2. gaz=document.getElementById('gaz');
  3. prad=document.getElementById('prad');
  4. tel_kom=document.getElementById('tel_kom');
  5. tel_stac=document.getElementById('tel_stac');
  6. isko=document.getElementById('isko');
  7. inne=document.getElementById('inne');
  8. prowizja=document.getElementById('prowizja');
  9. var suma = gaz + prad + tel_kom + tel_stac + isko + inne + prowizja;
  10. suma_wplat = document.getElementById('suma_wplat');
  11. suma_wplat.value = suma;
  12. }


Co jest jeszcze nie tak?
nospor
widze ze nie czytasz dokladnie komentarzy, ktore umiescilem winksmiley.jpg
Cytat
//i potem normalnie: pole.value


czyli u ciebie powinno byc tak:
Kod
gaz=document.getElementById('gaz').value;
i reszta podobnie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.