Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js][php] Obliczenia matematyczne - dodawanie pola, Dodawanie dodatkowego pola a obliczenia w locie
smarcz
post 12.05.2008, 21:40:16
Post #1





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

Ostrzeżenie: (0%)
-----


Witam! Mam taki problem: chciałbym napisać skrypt, który w locie obliczał by dane liczbowe w formularzu. Formularz ten składa się z trzech sekcji (pól input) np:
1.) Cena
2.) Zakup
3.) Koszty

Pole input 1 i 2 są stałymi, ale input z pola 3 można dodawać w zależności od sytuacji. Dodawanie nowego pola input odbywa się za pomocą php.

Jak napisać skrypt JS który obliczał by właściwie wypełnione pola input niezależnie od ilości dodanych nowych pól o nazwie koszty.

Dla stałych 3 parametrów potrafię napisać skrypt. Gorzej jeżeli idzie o dodatkowe pola input w dziale koszty.
Dodam, że pole koszty zbudowałem w sposób <input type="text" name="koszty[1]"> w zależności od dodanej liczby pól liczba w nawiasie się zmienia o 1 dla każdego kolejnego pola.

Jak napisać funkcję licz() obliczającą dane i wypisującą w dodatkowym polu input??

Dziękuję:)
Go to the top of the page
+Quote Post
lord_t
post 12.05.2008, 22:22:46
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

Ostrzeżenie: (0%)
-----


Podpowiedź:)
  1. function licz()
  2. {
  3. var x=document.getElementsByName('box');
  4. var suma=0;
  5. for(i=0;i<x.length;i++)
  6. suma+=parseFloat(x[i].value);
  7. alert(suma);
  8. }
  9.  
  10.  
  11. <div onclick="licz()">Licz</div>
  12. <input type="text" name="box">
  13. <br>
  14. <input type="text" name="box">
  15.  
  16. <input type="text" name="box">


(Dla JS znaczniki script powinny mieć odpowiednie atrybuty, ale nie chciało mi się ich pisać)

Ten post edytował lord_t 12.05.2008, 22:25:25


--------------------
Go to the top of the page
+Quote Post
smarcz
post 13.05.2008, 20:16:12
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

Ostrzeżenie: (0%)
-----


OK! Zrobiłem coś takiego na podstawie przedstawionej podpowiedzi. Ale czemu to nie działa pod Firefoxem a tylko i jedynie pod Explorerem??
  1. function licz()
  2. {
  3. var x=document.getElementById('cena');
  4. var y=document.getElementById('sprzedaz');
  5.  
  6. x = parseFloat(x.value);
  7. y = parseFloat(y.value);
  8.  
  9.  
  10. var k=document.getElementsByName('box');
  11. var licz=0;
  12. for(i=0;i<k.length;i++){
  13. licz+=parseFloat(k[i].value);
  14. }
  15. var suma = 0;
  16. suma = y - x - licz;
  17. //alert(suma);
  18.  
  19. maska = /^\d+$/;
  20. if (maska.test(y)) {
  21. dochod.value = suma;
  22. } else {
  23. dochod.value="";
  24. }
  25. }
  26.  
  27.  
  28. <div onclick="licz()">Oblicz <input type="text" name="dochod"></div>
  29.  
  30.  
  31. <input type="text" name="sprzedaz" id="sprzedaz">Sprzedaz<br>
  32. <input type="text" name="cena" id="cena" onkeyup="licz()">Zakup<br>
  33.  
  34. <input type="text" name="box" onkeyup="licz()">Koszt
  35. <br>
  36. <input type="text" name="box" onkeyup="licz()">Koszt
  37. <br>
  38. <input type="text" name="box" onkeyup="licz()">KOszt<!--Ostatni wiersz powinien zawierać zdarzenie onkeyup-->


Kurde nie mam pojęcia!?
Go to the top of the page
+Quote Post
ferr
post 13.05.2008, 20:24:32
Post #4





Grupa: Zarejestrowani
Postów: 122
Pomógł: 3
Dołączył: 18.12.2004

Ostrzeżenie: (0%)
-----


Jak nie dziala w FF to z reguly konsola bledow pokazuje co i jak jest zle, nieprawdaz?


--------------------
Go to the top of the page
+Quote Post
smarcz
post 14.05.2008, 06:02:59
Post #5





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

Ostrzeżenie: (0%)
-----


Konsola błędów podaje ze dochod jest niezdefiniowany?? Kurcze i co zrobić aby w to pole wpisywał się wynik obliczeń??
Go to the top of the page
+Quote Post
revyag
post 14.05.2008, 07:45:50
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 258
Pomógł: 16
Dołączył: 21.09.2004
Skąd: Kielce

Ostrzeżenie: (0%)
-----


Dodaj:
Kod
var dochod=document.getElementById('dochod');


Zmień
  1. <input type="text" name="dochod" />

na
  1. <input type="text" name="dochod" id="dochod" />


Odwołuj się poprzez id. Teraz robisz to przez zmienną globalną którą rozumie tylko ie. Takie praktyki są niewskazane.


--------------------
-------------

------
Go to the top of the page
+Quote Post
smarcz
post 14.05.2008, 08:02:01
Post #7





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 12.05.2005

Ostrzeżenie: (0%)
-----


Bardzo dziękuję za odpowiedź. W między czasie zrobiłem coś takiego. Dodatkowo dołączyłem system poprawy przecinka "," na kropkę "." aby poprawnie wypełniać pola.

Z podpowiedzi zaraz skorzystam smile.gif. Tymczasem mój kod:
  1. function licz(dochod)
  2. {
  3. var x=document.getElementById('cena');
  4. var y=document.getElementById('sprzedaz');
  5.  
  6. l=x.value;
  7. l=l.replace(',','.');
  8. l=parseFloat(l);
  9.  
  10. r=y.value;
  11. r=r.replace(',','.');
  12. r=parseFloat(r);
  13.  
  14.  
  15. var k=document.getElementsByName('box');
  16. var licz=0;
  17. for(i=0;i<k.length;i++){
  18.  
  19. z=k[i].value;
  20. z=z.replace(',','.');
  21. z=parseFloat(z);
  22.  
  23. licz+=z;
  24. }
  25. var suma = 0;
  26. suma = r - l - licz;
  27. //alert(suma);
  28.  
  29. dochod.value = suma;
  30.  
  31.  
  32. }
  33.  
  34. <form name="f1">
  35. <div onclick="licz(document.f1.dochod)">Licz </div>
  36. <input type="text" name="dochod"><br>
  37.  
  38. <input type="text" name="sprzedaz" id="sprzedaz">Sprzedaz<br>
  39. <input type="text" name="cena" id="cena" >Zakup<br>
  40.  
  41. <input type="text" name="box" >
  42. <br>
  43. <input type="text" name="box" >
  44.  
  45. <input type="text" name="box" onkeyup="licz(document.f1.dochod)"><!--Ostatni wiersz powinien zawierać zdarzenie onkeyup-->
  46. </form>



A to ten sam skrypt z wykorzystaniem podpowiedzi. Serdeczne dzięki smile.gif

  1. function licz(dochod)
  2. {
  3. var x=document.getElementById('cena');
  4. var y=document.getElementById('sprzedaz');
  5. var dochod=document.getElementById('dochod');
  6.  
  7. l=x.value;
  8. l=l.replace(',','.');
  9. l=parseFloat(l);
  10.  
  11. r=y.value;
  12. r=r.replace(',','.');
  13. r=parseFloat(r);
  14.  
  15.  
  16. var k=document.getElementsByName('box');
  17. var licz=0;
  18. for(i=0;i<k.length;i++){
  19.  
  20. z=k[i].value;
  21. z=z.replace(',','.');
  22. z=parseFloat(z);
  23.  
  24. licz+=z;
  25. }
  26. var suma = 0;
  27. suma = r - l - licz;
  28. //alert(suma);
  29.  
  30. dochod.value = suma;
  31.  
  32.  
  33. }
  34.  
  35. <form name="f1">
  36. <div onclick="licz()">Licz </div>
  37. <input type="text" name="dochod" id="dochod"><br>
  38.  
  39. <input type="text" name="sprzedaz" id="sprzedaz">Sprzedaz<br>
  40. <input type="text" name="cena" id="cena" >Zakup<br>
  41.  
  42. <input type="text" name="box" >
  43. <br>
  44. <input type="text" name="box" >
  45.  
  46. <input type="text" name="box" onkeyup="licz()"><!--Ostatni wiersz powinien zawierać zdarzenie onkeyup-->
  47. </form>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.05.2025 - 04:51