Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz, zliczanie kwot., radio, checkbox
nitr0
post 24.01.2010, 15:22:09
Post #1





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 26.01.2006
Skąd: o2k/Kalisz

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


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.
Go to the top of the page
+Quote Post
Pacio
post 27.01.2010, 00:14:52
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

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


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>


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
nitr0
post 24.02.2010, 23:14:51
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 26.01.2006
Skąd: o2k/Kalisz

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


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

Ten post edytował nitr0 30.01.2010, 22:09:35
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: 14.08.2025 - 12:02