Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: dwa selecty zależne od siebie
Forum PHP.pl > Forum > Po stronie przeglądarki
grzegorz_g
witam

mam formularz z dwoma selectami

  1. <select class="choose2" name="id_user">
  2. <option value="0">wybierz ze znajomych</option>
  3. <option value="1">opcja 1</option>
  4. <option value="2">opcja 2</option>
  5. <option value="3">opcja 3</option>
  6.  
  7. <select class="choose2" name="id_user">
  8. <option value="0">wybierz z wszystkich</option>
  9. <option value="1">opcja 1</option>
  10. <option value="2">opcja 2</option>
  11. <option value="3">opcja 3</option>
  12.  


i szukam rozwiazanie teakiego ze user ma mozliwosc wybrania ocji tylko z jednego selecta. Czyli jak wybiera z "wybierz ze znajomych" to nie może wybrać z
"wybierz z wszystkich". Super by było jakby nazwa pola została identyczna dla obu selectów.

Czekam na pomoc w moim kłopocie.
skowron-line
1 popraw tytuł bo Spaw zwróci ci uwagę.
2 Jest to dość prosta sprawa, robiesz onChange a w funkcji pobierasz
  1. document.getElementsByName

i to ci zwróci tablice z 2 obiektami o nazwie id_user i w zależności od tego który wybierzesz to 2 zablokujesz ( disabled ) i wtedy się ten nie wyśle.
grzegorz_g
tylko wiesz co ja chce zrobic, żeby jeszcze sie dało poźniej zmienić jeszcze przed wysłanie formularza.

Bo jak ktoś ustawi select1 na opcja 1...n to ma zablokować select2, ale jak zmieni select1 z opcja1 na opcja0 to ma odblokować select2 i z seletem analogicznie

czy takie coś jest do zrobienia??
skowron-line
Cytat(grzegorz_g @ 26.08.2009, 10:20:30 ) *
tylko wiesz co ja chce zrobic, żeby jeszcze sie dało poźniej zmienić jeszcze przed wysłanie formularza.

Bo jak ktoś ustawi select1 na opcja 1...n to ma zablokować select2, ale jak zmieni select1 z opcja1 na opcja0 to ma odblokować select2 i z seletem analogicznie

czy takie coś jest do zrobienia??

Oczywiście że się da, w funkcji sprawdzisz sobie czy value jest > 0 i na tej podstawie zadecydujesz czy zablokować 2 selecta czy nie.
thek
Ustaw sobie przez JS w zdarzeniu onchange sprawdzanie wybranego option. Jeśli jego value różne od 0 to robi disabled w tym drugim select. Tylko nie zapomnij ustawić, że wybranie w nim value = 0 odblokowuje tego drugiego. Bo sobie zablokujesz na amen winksmiley.jpg
grzegorz_g
  1. function wybor() {
  2.  
  3. z=document.getElementsByName("id_user");
  4.  
  5.  
  6. alert (z);
  7.  
  8. }


ta funkcja wybor musi mieć jakis parametr , bo alert pokazuje mi [object] a nie wiem jak sprawdzić,który select wybralem
thek
masz GetELEMENTS <- a to Ci zwraca nie string z nazwą tylko sam sobie sprawdź co ;P Dlatego masz object smile.gif Lepiej posłuż się id bo jest jednoznaczne. Wtedy jako parametr pchniesz id selecta do funkcji.
czyli będziesz miał onchange="wybor(this, 'id_blokowanego')"
Wtedy zdefiniujesz sobie ładnie sprawdzanie jaką wartość value masz w this i od niej uzależnisz czy blokować "sąsiada" czy nie smile.gif
grzegorz_g
  1.  
  2. function wybor(z,blok) {
  3.  
  4. z1=document.getElementById(z).value;
  5. z2=document.getElementById(blok);
  6.  
  7.  
  8.  
  9. if (z1==0) { z2.setAttribute("enabled","enabled") ;} else z2.setAttribute("disabled","disabled");
  10.  
  11.  
  12. }
  13.  


kurcze myśle że to juz ostanie pytanie
blokuje mi ładnie selecta
tylko jak dam opcje0 = value=0 to nie odblokowuje mi selecta
co robie nie tak?

thek
Lepiej zobacz sobie który z atrybutów istnieje... Enabled czy Disabled winksmiley.jpg Bo dam sobie głowę uciąć, że jest tylko jeden z nich i tylko wartość mu się zmienia winksmiley.jpg
Ja bym użył formy:
z2.disabled=false;
lub
z2.disabled=true;
w odpowiednim przypadku ale co ja tam wiem winksmiley.jpg
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.