Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz, zliczanie kwot.
Forum PHP.pl > Forum > XML, AJAX
nitr0
Witajcie,
Mam formularz

  1. <input type="checkbox" value="1" name="cos_1" /> 10zł
  2. <input type="checkbox" value="2" name="cos_2" /> 20zł
  3. <input type="radio" value="1" name="pierdola_1" /> 30zł
  4. <input type="radio" value="2" name="pierdola_2" /> 40zł
  5. </form>
  6. W sumie: (tu kwota)
  7. </body>


I mam pytanie, bo nie wiem jak kompletnie się za to zabrać.
Jak zrobić aby po zaznaczeniu pól (jednego - kilku) wyświetlała się suma kwot które reprezentują, oczywiście bez przeładowywania strony. W obu przypadkach Value="1" / "2" są w efekcie przekazywane do bazy MySQL. Kwota ma tylko się wyświetlać.

Będę wdzięczny za wskazówki bądź rozwiązanie,
Pozdrawiam.
Pacio
Zaczalbym od poprawienia nieco formularza, tj. dodanie labeli do pol, wsadzenie (tu kwota) w jakis element, ktory mozna by odnalezc w DOM. Nastepnie dodanie handlerow na onchange dla inputow. Przy kazdej zmianie jakiegokolwiek inputa, przelecenie po wszystkich i zsumowanie kwot labeli tych zaznaczonych (po usunieciu i sparsowaniu na integera). Otrzymana kwote potem wrzucic do elementu z (tu kwota):
  1. <script type="text/javascript">
  2. function kwotaInputa(id) {
  3. var labele = document.getElementsByTagName("label");
  4. for ( j=0; j < labele.length; j++ ) {
  5. if ( labele[j].getAttribute("for") == id ) {
  6. return parseInt(labele[j].textContent.replace('zł', ''));
  7. }
  8. }
  9. }
  10.  
  11. function sumowanieKwot() {
  12. var inputy = document.getElementsByTagName("input");
  13. var kwota = document.getElementById("kwota");
  14. for ( i=0; i < inputy.length; i++ ) {
  15. inputy[i].onchange = function onchange(e) {
  16. suma = 0;
  17. for ( j=0; j < inputy.length; j++ ) {
  18. if ( inputy[j].checked == true ) {
  19. suma += kwotaInputa(inputy[j].id);
  20. }
  21. }
  22. kwota.innerHTML = suma +"zł";
  23. };
  24. }
  25. }
  26. </head>
  27. <body onload="sumowanieKwot()">
  28. <input type="checkbox" value="1" name="cos_1" id="cos_1" /> <label for="cos_1">10zł</label>
  29. <input type="checkbox" value="2" name="cos_2" id="cos_2" /> <label for="cos_2">20zł</label>
  30. <input type="radio" value="1" name="pierdola_1" id="pierdola_1" /> <label for="pierdola_1">30zł</label>
  31. <input type="radio" value="2" name="pierdola_2" id="pierdola_2" /> <label for="pierdola_2">40zł</label>
  32. </form>
  33. W sumie: <span id="kwota">(tu kwota)</span>
  34. </body>
  35. </html>
nitr0
Witaj Pacio,

Dzięki za odpowiedź. Generalnie chyba to chyba rozwiąże mi problem, lecz... nie działa pod IE 8.0 (Vista). :/

Po zaznaczeniu jakiejkolwiek z opcji dostaję:

Cytat
Do zaplaty: NaNzł




Pod Safari i FF działa super!

Jakiś pomysł?

Podbijam. Jakieś pomysły? sadsmiley02.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.