Witam,

Mam pewien problem co do dokonania pewnych obliczeń w locie. Sytuacja przedstawia sie następująco: mamy sumę powiedzmy 5000 którą trzeba rozdzielić między kilka pól, właściwie liczba pól może być różna. Wymyśliłem sobie to tak:

pole1 - przechowuje informacje ile pieniędzy mamy do rozdzielenia np. nasze 5000
pole2 - przechowuje ile pieniędzy już rozdzielono
pole3 - przechowuje sumę z pola na które kliknęliśmy

Kod przedstawia się następująco:

  1. <script type="text/javascript">
  2. function rozdzial(suma, rozdzielono, doRozdzialu) {
  3.  
  4. if(suma.value == '')
  5. amount = 0;
  6. else
  7. amount = parseFloat(suma.value);
  8.  
  9.  
  10. razem = amount + parseFloat(document.getElementById(rozdzielono).value);
  11.  
  12. if(razem <= doRozdzialu) {
  13. return true;
  14. } else {
  15. suma.value = parseFloat(document.getElementById('tmp').value);
  16. alert('Przekroczono sumę do rozdzielenia.');
  17. }
  18. }
  19.  
  20. function move(value, id) {
  21.  
  22. document.getElementById(id).value = value;
  23. }
  24.  
  25. function roznica(poZmianie, przedZmiana, dodajDo) {
  26.  
  27. if(poZmianie.value == '')
  28. poZ = 0;
  29. else
  30. poZ = parseFloat(poZmianie.value);
  31.  
  32. if(document.getElementById(przedZmiana).value == '')
  33. przedZ = 0;
  34. else
  35. przedZ = parseFloat(document.getElementById(przedZmiana).value);
  36.  
  37. wynik = poZ - przedZ;
  38.  
  39. document.getElementById(dodajDo).value = parseFloat(document.getElementById(dodajDo).value) + parseFloat(wynik);
  40.  
  41. return true;
  42. }
  43.  
  44. do rozdzienia: <input type="text" name="sum" value="5000" />
  45. rozdzielono: <input type="text" name="rozdzielono" id="rozdzielono" value="0" />
  46. tmp: <input type="text" id="tmp" value="0" />
  47.  
  48. <tr>
  49. <td class="amount">Element 1</td>
  50. <td><input type="text" name="" style="width: 100px;" onmouseup="move(this.value, 'tmp')" onchange="roznica(this, 'tmp', 'rozdzielono')" onkeyup="rozdzial(this, 'rozdzielono', '5000')" value="0" /></td>
  51. </tr>
  52. <tr>
  53. <td class="amount">Element 2</td>
  54. <td><input type="text" name="" style="width: 100px;" onmouseup="move(this.value, 'tmp')" onchange="roznica(this, 'tmp', 'rozdzielono')" onkeyup="rozdzial(this, 'rozdzielono', '5000')" value="0" /></td>
  55. </tr>
  56. <tr>
  57. <td class="amount">Element 3</td>
  58. <td><input type="text" name="" style="width: 100px;" onmouseup="move(this.value, 'tmp')" onchange="roznica(this, 'tmp', 'rozdzielono')" onkeyup="rozdzial(this, 'rozdzielono', '5000')" value="0" /></td>
  59. </tr>


Zasadniczo działanie jest prawidłowe jednak występuje problem gdy rozdzielona zostanie pełna kwota i chcę zmodyfikować któryś element.