• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dynamiczne podstawianie ceny

VPS Starter Arubacloud
0 głosów
235 wizyt
pytanie zadane 29 marca 2016 w JavaScript przez Maizyy Nowicjusz (170 p.)

Witam. Jestem młodym programistą, który nie za dużo czasu obcował z JS, mam pytanie. Jak dynamicznie podmieniać ceny w zależności od wybranej opcji w 'select'

<select name="lista-produktow" id="lista">
                            <option value="-" id="0">Lista produktów</option>
                            <optgroup label="Fitness">
                                <option value="PowerBoard 2.0" id="1">PowerBoard 2.0</option>
                                <option value="Hantle Adonis i Olympia" id="2">Hantle Adonis i Olympia</option>
                            </optgroup>
                            <optgroup label="Masażery">
                                <option value="Quattromed IV" id="3">Quattromed IV</option>
                                <option value="Quattromed III" id="4">Quattromed III</option>
                                <option value="Canoo IV" id="5">Canoo IV</option>
                                <option value="Maxiwell III" id="6">Maxiwell III</option>
                                <option disabled="disabled" value="GymBelt">GymBelt  -  WYCOFANY</option>
                            </optgroup>
                            <optgroup label="Wyciskarki">
                                <option value="Hurom 500" id="7">Hurom 500</option>
                                <option value="Hurom HR" id="8">Hurom HR</option>
                                <option value="Hurom HH2G" id="9">Hurom HH2G</option>
                                <option value="Hurom HF2G" id="10">Hurom HF2G</option>
                                <option value="Hurom HG2G" id="11">Hurom HG2G</option>
                                <option value="Hurom DT" id="">Hurom DT</option>
                            </optgroup>
                            <optgroup label="Fotele">
                                <option value="Bismarck II" id="12">Bismarck II</option>
                                <option value="Hilton II" id="13">Hilton II</option>
                                <option value="Kennedy IV" id="14">Kennedy IV</option>
                                <option value="Skyliner A300" id="15">Skyliner A300</option>
                            </optgroup>
                            <option value="Zestaw do ozonoterapi" id="">Zestaw do ozonoterapi</option>
                        </select>

Jak to rozwiązać?

2 odpowiedzi

0 głosów
odpowiedź 29 marca 2016 przez ormu16 Gaduła (4,980 p.)
wybrane 29 marca 2016 przez Maizyy
 
Najlepsza
$('#lista').change(function() {
   var val = $('select option:selected').text();
   switch(val) {
	   case 'Canoo IV':
			//twój kod
	   break;
	   case 'Quattromed III':
			//twój kod
	   break;
   }
})

Teraz tylko podmienić ceny zależnie od opcji przez switch()

komentarz 29 marca 2016 przez Maizyy Nowicjusz (170 p.)
Byś mógł podać przykład switcha z 1. case, bo jestem totalnie bez wiedzy w JS?
komentarz 29 marca 2016 przez ScriptyChris Mędrzec (190,190 p.)
Które ceny chcesz podmieniać? Ja nie widzę tam cen, a tylko nazwy produktów (jeśli już).
komentarz 29 marca 2016 przez Maizyy Nowicjusz (170 p.)
W divie jest ustawiona na stałe (żeby była tak orientacyjnie) i to jest 4490 PLN i ta cena jest w divie o id="cena". I właśnie w tym divie w zależności od wybranej opcji ma sie zmieniać cena
komentarz 29 marca 2016 przez ormu16 Gaduła (4,980 p.)
$('#lista').change(function() {
   var val = $('select option:selected').text();
   switch(val) {
	   case 'Canoo IV':
			//twój kod
	   break;
	   case 'Quattromed III':
			//twój kod
	   break;
   }
})

Przepraszam że wcześniej dałem Ci zły kod. Można to zrobić łatwiej ale jeżeli chcesz w ten sposób to teraz możesz sobie dokończyć. Możesz zawsze w value dać cenę i potem tylko wyświetlić ją na ekranie przejmując ją w ten sam sposób, czyli przez 

var val = $('select option:selected').text();
komentarz 29 marca 2016 przez Maizyy Nowicjusz (170 p.)
Bardzo dziękuje ! :D
komentarz 29 marca 2016 przez Maizyy Nowicjusz (170 p.)
Mam jeden problem. Wyświetla mi value które posiada select a nie value optionów
komentarz 29 marca 2016 przez ormu16 Gaduła (4,980 p.)
Przejrzyj dokładnie kod, bo u mnie wszystko działa.
komentarz 29 marca 2016 przez ScriptyChris Mędrzec (190,190 p.)

Da się to zrobić bez jQuery i switch'a. Na zasadzie - pobierz cenę z selekta i wstaw bezpośrednio do tego DIVa, gdzie ma być ona wyświetlona. Nie trzeba tutaj switch

Przykład: https://jsfiddle.net/Ld172yj8/

Nie wiem skąd bierzesz ceny produktów - w poszczególnych selektach masz nazwy produktów. Jakąś stałą cenę masz w DIVie - czyli tam ma się pojawiać cena produktu(?), ale skąd ona ma zostać pobrana, jeśli w selektach są tylko nazwy produktów?

0 głosów
odpowiedź 29 marca 2016 przez ScriptyChris Mędrzec (190,190 p.)
Spróbuj w ten sposób - bez switcha i jQuery. JavaScript tylko "kieruje" ceny z klikniętych select do odpowiedniego DIVa. Produkty dodajesz/usuwasz i modyfikujesz tylko w HTML, a JS jest bez zmian:

https://jsfiddle.net/Ld172yj8/

Podobne pytania

0 głosów
0 odpowiedzi 158 wizyt
0 głosów
1 odpowiedź 483 wizyt
0 głosów
1 odpowiedź 322 wizyt

92,967 zapytań

141,931 odpowiedzi

321,163 komentarzy

62,299 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...