Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dodawanie w formularzu
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
blexth
witam,

mam problem z dodawaniem wartosci radiobuttonow w formularzu.

Załóżmy:

mam 6 radio buttony w 3 kategoriach:

[button] [button]
[button] [button]
[button] [button]

i np z kazdej kategori trzeba wybrac po jednym i zeby w zaleznosci od wybranych przyciskow pokazywala sie suma (wartosci podane w value="" )
i wyswietlalo się na koncu


[button] [button]
[button] [button]
[button] [button]

suma: [wynik]


jakies pomysly?
JaRoPHP
Cytat
jakies pomysly?
Brzmi to jak zadanie domowe, a nie zapytanie o pomoc...

Jeżeli oczekujesz pomocy, to wklej kod jaki zrobiłeś, i napisz co nie działa. Tak będzie łatwiej użytkownikom dostrzec ewentualny problem.
No chyba że nic nie zrobiłeś, a oczekujesz, że ktoś Ci to zrobi (lecz stwierdzenie "mam problem" świadczy, że coś tam jest zrobione - pochwal się tym).
blexth
nie jest to praca domowa, po prostu myslalem w jakie sposoby moznaby to rozwiazac. Podaje moj, niestety nie wiem w nim jak zrobic by zmienna cena zmieniala sie 'automatycznie'.


funkcja:
  1. function oblicz(zmienna)
  2. {
  3. switch(this.zmienna)
  4. {
  5. case "sto":
  6. cena=cena+100;
  7. break;
  8. case "dwiescie":
  9. cena=cena+200;
  10. break;
  11. default:
  12. cena=cena;
  13. }
  14. return cena;
  15. }


  1. <form action="" method="post">
  2. <input type="radio" name"pierwszy" vlaue="sto" onclick="ocena+=blicz(pierwszy)">100
  3. <input type="radio" name"pierwszy" vlaue="dwiescie" onclick="cena+=oblicz(pierwszy)">200
  4. <br>
  5. <input type="radio" name"drugi" vlaue="sto" onclick="cena+=oblicz(drugi)">100
  6. <input type="radio" name"drugi" vlaue="dwiescie" onclick="cena+=oblicz(drugi)">200
  7. <br>
  8. <input type="radio" name"trzeci" vlaue="sto" onclick="cena+=oblicz(trzeci)">100
  9. <input type="radio" name"trzeci" vlaue="dwiescie" onclick="cena+=oblicz(trzeci)">200
  10. <br>
  11. <script>document.write(cena);</script>
  12. </form>
JaRoPHP
1. Wywołując metodę write() po załadowaniu się strony, wymazujesz całą jej zawartość.
Aby wynik obliczeń był wyświetlany na bieżąco, musisz użyć innej metody wypisywania wyniku (np. dla elementu <div /> użycie metody replaceChild()).

2. Nie ma atrybutu vlaue, jest natomiast value (być może literówka).

3. Skoro chcesz wykonywać działania arytmetyczne, dlaczego w atrybucie value nie masz liczb?

4. Przypisując wartość do danego atrybutu używa się znaku równości (a Ty masz np.: name"drugi" - być może literówka).

5. Wywołanie metody poprzez zdarzenie onclick() nie jest takie, jakie powinno być. Wystarczy onclick="oblicz()".

6. Metoda oblicz() również nie wygląda najlepiej. W metodzie tej musisz sprawdzić, który przycisk z poszczególnej opcji jest wybrany, odczytać wartość tego przycisku i dodać ją do jakiejś zmiennej (np.cena).
Następnie korzystając z metody replaceChild() możesz wyświetlić wynik na stronie.

7. Zamykaj wszystkie znaczniki (np. <input ...>100</input>).
blexth
ok, zrobilem wg Twojej rady, w value teraz jest np 100 zamiast sto.

I teraz kolejny problem:

this.drugi.value nie dziala, jak moge odwolac sie do wartosci zmiennych? ew/ przeslac wartosc value do metody?

pzdr
JaRoPHP
Cytat(blexth @ 24.01.2007, 16:03:38 ) *
I teraz kolejny problem: this.drugi.value nie dziala
A skąd to masz? Jak teraz wygląda twoja funkcja JS? Trudno coś poradzić, jak nie ma się pojęcia co jest zrobione.

Cytat(blexth @ 24.01.2007, 16:03:38 ) *
jak moge odwolac sie do wartosci zmiennych? ew/ przeslac wartosc value do metody?
Do funkcji nie musisz przesyłać żadnego argumentu, bo i tak trzeba dodać wszystkie wartości.
A do wartości możesz się odwołać na przykład tak:
  1. document.forms[0].elements[i].value
- gdzie i to numer elementu w formularzu.
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.