Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [js]Zmiana opcji w select po kliknięciu w link
Adrian1207
post 17.03.2009, 18:50:39
Post #1





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Witam

Mam problem z pewnym dość obszernym formularzem. Aby był on czytelny i wygodny, stwierdziłem że najlepsze będzie użycie JS i tak zrobiłem, ale z jedną rzeczą mam kłopot. Mianowicie zmiana opcji w select po kliknięciu w odnośnik. Na początek użyłem takiego skryptu: SKRYPT
Wszystko byłoby dobrze, gdyby nie to, że zmiana contentu ma się odbyć po kliknięciu w link, a nie po wybraniu z innego selecta, więc spróbowałem zastosować skrypt który po kliknięciu w odnośnik zmieniał mi na wybraną pozycję pierwszego selecta, niestety przy takim rozwiązaniu ten drugi się nie aktualizował. Celem jest osiągnięcie tego, żeby user miał mapkę województw i obok listę <select> gmin w klikniętym województwie, czyli wchodzisz, masz mapkę na której jest mapa odnośników i po kliknięciu w jeden z odnośników po prawej bez przeładowania pokazuje Ci się lista gmin w tym województwie. Wszystko mam gotowe poza tym skrypcikiem. Pytanie moje jest takie, jak zmienić skrypt do którego link podałem tak aby można było ustawić href="java script: costam;" i taki odnośnik zmieniałby opcje w select?

Pozdrawiam
Go to the top of the page
+Quote Post
erix
post 17.03.2009, 19:35:08
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Wywołaj updatecities() z parametrem z odpowiednim parametrem.

Cytat
href="java script: costam;

A cóż to za dziwoląg z poprzedniej epoki?

Kod
document.getElementById('link').onclick = function(e){ updatecities('parametr'); e.preventDefault(); }


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Adrian1207
post 17.03.2009, 20:03:11
Post #3





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Ooo super smile.gif Działa i zmienia, póki co na mojej konstrukcji, która jest może nie na czasie, ale działa. Teraz pozostało listę tysięcy gmin wsadzić jakoś do tego cudeńka JS, no ale to już jakoś może sobie poradzę. Ogromne dzięki, jakby co to jeszcze będę pisał. A do Ciebie punkcik za pomoc już wędruje winksmiley.jpg
Go to the top of the page
+Quote Post
erix
post 17.03.2009, 21:06:37
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Teraz pozostało listę tysięcy gmin wsadzić jakoś do tego cudeńka JS, no ale to już jakoś może sobie poradzę.

No, nie radzę... Może teraz silniki JS są wydajniejsze, ale z tego, co kiedyś kiedyś czytałem, to przy tysiącach rekordów w tablicy JS engine się po prostu wykrzaczał albo mulił.

Lepiej pobieraj listę AJAX-em.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Adrian1207
post 17.03.2009, 23:12:02
Post #5





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Jest ich mniej więcej 2500-3000 podzielone na 16 tablic, więc myślę że jednak sobie to poradzi bez bardziej zaawansowanych rozwiązań...mam taką nadzieję, bo ja w tych technologiach działających po przeglądarce to nie mam zbyt dużej wiedzy i unikam tego.

Jeszcze jedno chciałem zapytać, bo skróciłem te tablice pozbywając się tego podzielenia treść|wartość i wpisałem same treści w takiej postaci:

Kod
cities[16]=[" Bochnia (M) "," Bochnia (W) "," Drwinia (W) "," Lipnica Murowana (W) ","......


i zastanawiam się jak teraz edytować dzielenie stringa w tej linii JS:

Kod
citieslist.options[citieslist.options.length]=new Option(cities[selectedcitygroup][i].split("|")[0], cities[selectedcitygroup][i].split("|")[1])


żeby nie próbowało dzielić, tylko przypisało to co jest w cudzysłowie jako i wartość i nazwa, bo teraz rozumie to jako nazwę a wartość w alercie wywala mi undefined.

Możesz jeszcze przy tym pomóc? smile.gif

Pozdrawiam i dzięki za dotychczasową pomoc, skrypt już działa więc mogę robić dalej a poprawki na czasie się stworzy. To było najważniejsze smile.gif
Go to the top of the page
+Quote Post
erix
post 17.03.2009, 23:38:45
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Regexp. winksmiley.jpg
Albo dzielisz po nawiasie i wyciągasz tylko jeden znak z elementu o indeksie 1.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Adrian1207
post 18.03.2009, 19:48:13
Post #7





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Tylko nic mi po jednym znaku w wartości, pasowało by mi usunięcie w ogóle podziału, a zapisanie stringa jako taką samą wartość i nazwę. Np. jak w html jest <option>costam</option> to przypisuje to co jest między tagami jako wartość, i tak tutaj bym chciał tylko JS wszystko komplikuje tongue.gif
Go to the top of the page
+Quote Post
erix
post 18.03.2009, 20:43:18
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
to przypisuje to co jest między tagami jako wartość, i tak tutaj bym chciał tylko JS wszystko komplikuje

A konkretniej? Nie mogę jakoś wywnioskować problemu z Twojej. Ja podałem dwa możliwe rozwiązania, pierwszego jakbyś nie dostrzegł. tongue.gif


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Adrian1207
post 18.03.2009, 23:17:19
Post #9





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Najlepiej to Ci chyba przekażę przykładem w php, pewnie tak się najlepiej zrozumiemy tongue.gif
  1. <?php
  2. $miasto="Bochnia (M)";
  3. ?>
  4. <select name="cities">
  5. <option value="<?php echo $miasto; ?>"><?php echo $miasto; ?></option>
  6. </select>


Czyli żeby value było takie same jak to co między <option> smile.gif

A podając w tablicy tego skryptu js coś bez |value opcje te w ogóle nie mają ustawionego value i nie ma jak odczytać wyboru. A jak po każdym mieście dodam kreskę pionową i drugi raz nazwa miasta to raz że tablice będą 2 razy większe a dwa, że zajmie mi to z kilka godzin kopiowania tongue.gif

A co do pierwszego podanego przez Ciebie rozwiązania, to widziałem, ale to nadal jest do wyrażeń regularnych a ja sie chce ich właśnie pozbyć.

Wileki dzięki jeszcze raz za zainteresowanie i dotychczasową pomoc smile.gif
Go to the top of the page
+Quote Post
erix
post 18.03.2009, 23:28:51
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://www.w3schools.com/HTMLDOM/met_select_add.asp

Jak dodać do tego value, to chyba wiesz. winksmiley.jpg O ile - oczywiście - o to chodzi. Bo dalej nie wiem, czy masz problem z tym (M), czy ze zduplikowaniem etykietki opcji do wartości.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Adrian1207
post 18.03.2009, 23:55:51
Post #11





Grupa: Zarejestrowani
Postów: 94
Pomógł: 10
Dołączył: 20.02.2007

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


Już za chwilę będę studiował to z tego linka, a przed tym jeszcze raz spróbuję wyjaśnić smile.gif Nie wiem skąd Ci się wzięło, że ja mam problem z tym (M), bo sprawdzam teraz i nigdzie czegoś takiego nie pisałem, (M) lub (W) oznacza miast lub wieś i nie jest przy każdym stringu, bo są np. jeszcze osiedla. Nie bardzo wiem skąd wywnioskowałeś, że z tym mam problem, to jest tylko część nazwy opcji. Chodzi mi dokładnie o to drugie co napisałeś, zduplikowanie etykiety opcji do wartości nadal w tym skrypcie który podałem w pierwszym poście.

Edit:
Poradziłem sobie z tym smile.gif Wydawało się trudniejsze, ale poszło łatwo, wystarczyło usunąć split z definiowania nowej opcji.

Dzięki wielkie erix za pomoc smile.gif

Ten post edytował Adrian1207 19.03.2009, 21:00:02
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: 13.06.2025 - 07:00