Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] pobieranie danych z input +radio
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
shl
Witam

Mam taki problem. Nie moge poradzic sobie z pobraniem wartosci z pola input ktore jest powiazane z polem radio

Mam 4 pola radio
  1. <input name="szklo" type="radio" onchange="wyborszkla();"/>
  2. <input name="cena" type="text" id="cenaa" size="3" />
  3.  
  4. <input name="szklo" type="radio" onchange="wyborszkla();"/>
  5. <input name="cena" type="text" id="cenab" size="3" />
  6.  
  7. <input name="szklo" type="radio" onchange="wyborszkla();"/>
  8. <input name="cena" type="text" id="cenac" size="3" />
  9.  
  10. <input name="szklo" type="radio" onchange="wyborszkla();"/>
  11. <input name="cena" type="text" id="cenad" size="3" />


wartosci value dla input name=cena sa dodawane na podstawie wczesniej wpisanych danych w formularzu

  1. var cenaa = document.getElementById("cenaa");
  2. cenaa.value = zaokr((wys * szer * szkloa)/1000000);


i teraz potrzebuje w zaleznosci od zaznaczonego pola radio pobrac wlasnie ta wartosc pola input name=cena do dalszych dzialan obliczeniowych.
Dodalem funkcje wyborszkla()

  1. function wyborszkla()
  2. {
  3. szklo=document.getElementsByName("szklo");
  4. cena=document.getElementsByName("cena");
  5. dodatki = document.getElementById("wynik").value;
  6. cena_float = parseFloat(cena.value);
  7. suma = cena_float + dodatki;
  8. document.getElementById("sumazamowienia").value=suma;
  9. }


i tu problem nie wiem gdzie mam blad, ze nie pobiera mi tej wartosci pola input name=cena

Prosze o wskazowki
thek
Czy ja jestem ślepy, czy może żaden z radio nie ma parametru value? winksmiley.jpg Jedyne czym różnią się te 4 inputy to... uwaga... nie da się ich odróżnić. Jedyne różnice masz w inputach pod nimi i różnią się one wartością id. Twój efekt osiągniesz poprzez zostawienie w radio buttonac tego samego name (to już masz) i nadanie im różnych value. Nie zauważyłeś też, że inputy textowe mają ten sam name, co też jest błędem.

EDIT: Jaki tego efekt? Powiedz mi który input o name = cena skrypt ma wybrać jako ten prawidłowy?
shl
Kurcze smile.gif sam nie wiem co i jak smile.gif w js nie robilem prawie nic, wiec idzie mi to jak krew z nosa

ok zrobilem takie zmiany

  1. <input name="szklo" type="radio" value="a" onchange="wyborszkla();"/>
  2. <input name="a" type="text" id="cenaa" size="3" />
  3.  
  4. <input name="szklo" type="radio" value="b" onchange="wyborszkla();"/>
  5. <input name="b" type="text" id="cenab" size="3" />
  6.  
  7. <input name="szklo" type="radio" value="c" onchange="wyborszkla();"/>
  8. <input name="c" type="text" id="cenac" size="3" />
  9.  
  10. <input name="szklo" type="radio" value="d" onchange="wyborszkla();"/>
  11. <input name="d" type="text" id="cenad" size="3" />


ale dalej nie umiem sie odwolac do wartosci ceny z pola (input text)

zmienilem cos w funkcji ale pewnie zle smile.gif

  1. function wyborszkla()
  2. {
  3. szklo=document.getElementsByName("szklo");
  4. ktoracena = szklo.value;
  5. cena=document.getElementsByName("ktoracena");
  6. dodatki = document.getElementById("wynik").value;
  7. cena_float = parseFloat(cena.value);
  8. suma = cena_float + dodatki;
  9. document.getElementById("sumazamowienia").value=suma;
  10. }


zamiar byl taki zeby po zaznaczeniu ktoregos radio funkcja wyborszkla() pobrala dla danego radio wartosc value z pola input text, ale cos robie nie tak

CZy ten zapis
  1. szklo=document.getElementsByName("szklo");
  2. ktoracena = szklo.value;


jest prawidlowy ? jesli tak to mniemam ze powinien zwrocic mi wartosc a lub b lub c lub d ?
pozniej chcialem zeby pobralo cene z pola o name = a lub b lub c lub d
tu zapis

  1. ktoracena = szklo.value;
  2. cena=document.getElementsByName("ktoracena");


i klops
kamil4u
Jeśli chodzi o pola typu radio najłatwiej zrobić tak:
Kod
<input name="test" value="a" type="radio" onchange="test(this.value);">a<br>
<input name="test" value="b" type="radio"onchange="test(this.value);">b

<script type="text/javascript">
function test(value){
alert(value);
}
</script>

Wynik z tego zapisz do jakieś zmiennej(załóżmy 'x'). Teraz, żeby dobrać się do elementu <input type="text" id="costam-iTuWartoscX"> - zrób tak:
Kod
var element = document.getElementById('costam'+x);
alert(element.value); //dostaniesz wartość pola value w zależności od x


Jeśli nie możesz skorzystać z pierwszego kodu musisz przelecieć każdy element z tablicy(bo taką dostaniesz po wpisaniu: tablica = document.getElementsByName('test'); ) i sprawdzić, czy jest jakiś zaznaczony, jeśli nie to lecieć dalej, a jeśli jest to skończyć pętlę i zapamiętać, który to z kolei element(np. w zmiennej i). Później za pomocą prostego kodu( tablica[i].value ), będziesz miał ten sam wynik co w pierwszym kodzie.

Pozdrawiam
thek
W takim razie powiem Ci, że szedłeś w dobrą stronę, ale w pewnym momencie się rąbnąłeś lekko. Gdzie? Ano w odwołaniu do inputa z ceną. Podejrzyj sobie z tą funkcja test podaną przez poprzednika co Ci zwraca on, a potem zamiast:
test( this.value )
użyj
test( document.getElementById( 'cena'+this.value ).value )
i pomyśl jak blisko w sumie byleś rozwiązania poprawnego smile.gif
shl
Tak bylem blisko smile.gif ale czasami jest sie tak blisko ze nie widzi sie rozwiazania

  1. function wyborszkla(x){
  2. var wybranacena = document.getElementById('cena'+x).value;
  3. }


wiec wasza pomoc byla niezbedna, za ktora oczywiscie dziekuje bardzo smile.gif


a kozystajac z okazji chcialem podpytac jeszcze o jedna sprawe.

Jak smile.gif dodac z sumowac rozne elementy formularza:
Mam 3 grupy:
1. radio (4szt.) --- to z ktorymi walczylem powyzej
2. checkbox (5szt.) tu poszlo latwiej sumowanie wartosci zaznaczonych checkboxow
3. radio (2szt.) --- tu analogia do przykladu ktory pomogliscie mi rozwiazac.

Teraz chcialbym zsumowac te trzy pod sumy ... z taka opcja ze w dowolnej kolejnosci mozna zmieniac zaznaczenia w poszczegolnych grupach.

  1. function sumacalkowita()
  2. {
  3. var ceanaszkla = wybranacena;
  4. var cenadodatkow = document.getElementById("wynik").value;
  5. var cenadostawy = document.getElementById("wynikdostawa").value;
  6. var sumacalkowita = cenaszkla + cenadodatkow + cenadostawy;
  7. document.getElementById("sumazamowienia").value = sumacalkowita;
  8. }


tylko teraz problem jak wywaolywac ta fukcje, przy dowolnej zmianie w dowolnym miejscu w tych 3 grupach ?
kamil4u
Poczytaj o zdarzeniach w js, a wszystko będziesz wiedział smile.gif
shl
tak tak poczytalem smile.gif

ale co dalej bo kazde zdarzenie przypisane jest konkretnemu elementowi formularza, kazdy z moich elementow juz ma przypisane takie zdazenie. Wiec czy dopisac kolejne? Bo u mnie to juz i tak duzo maja smile.gif np:

  1. onchange="liczpole(); liczcene();" onkeyup="podgladszer(this.form);"


czy moze jest ktores ze zdarzen odwoluje sie ogolnie do zmiany jakiego kolwiek elementu na stronie? smile.gif
kamil4u
Ilość funkcji w zdarzeniu jest dowolna i tak musisz to zrobić smile.gif - później będziesz dopisywał zdarzenia przez JS i będzie to wyglądało trochę inaczej: http://www.quirksmode.org/js/eventSimple.html (jak chcesz się uczyć to poczytaj na ten temat trochę więcej, na razie traktuj to jako ciekawostkę)
shl
dzieki za wskazowki ... wszystko poszlo jak z gorki smile.gif kod moze nie tak idealny ale dziala, a to sie liczy smile.gif przynajmniej dla mnie

Pzodrawiam i jeszcze raz dziekuje za pomoc
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.