Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][HTML][PHP]Grupa checkbox-ów zależna od innego checkbox-a
Forum PHP.pl > Forum > Przedszkole
Szunaj85
Mam 2 grupy checkbox-ów (wybor i grupa_2).
I teraz chciałbym aby możliwość wyboru wszystkich checkbox-ów w grupie 2 była zablokowana do czasu aż zostanie zaznaczony checkbox wybor.
Gdy checkbox wybor zostanie zaznaczony, wszystkie checkbox-y z grupy 2 mają być odblokowane aż do momętu odznaczenia checkbox-a wybor.
Myślę tu o jquery, ewentualnie javascript lub html. I choć próbowałem nie mogę znaleźć rozwiązania problemu.
Ważną sprawą jest, że wszystkie checkbox-y z grupy 2 muszą mieć ten sam atrybut "name".
  1. <td><input type="checkbox" name="wybor" value="$POST[tak]"/>Wybór</td>

  1. <td><input type="checkbox" name="grupa_2" value="$POST[1]"/>1</td>
  2. <td><input type="checkbox" name="grupa_2" value="$POST[2]"/>2</td>
  3. <td><input type="checkbox" name="grupa_2" value="$POST[3]"/>3</td>
  4. <td><input type="checkbox" name="grupa_2" value="$POST[4]"/>4</td>
timon27
  1. <script>
  2. function f(checkboxWybor){
  3. if(checkboxWybor.checked){
  4. document.getElementById("ch1").disabled=true;
  5. document.getElementById("ch2").disabled=true;
  6. document.getElementById("ch3").disabled=true;
  7. document.getElementById("ch4").disabled=true;
  8. }else{
  9. document.getElementById("ch1").disabled=false;
  10. document.getElementById("ch2").disabled=false;
  11. document.getElementById("ch3").disabled=false;
  12. document.getElementById("ch4").disabled=false;
  13. }
  14. }
  15. </script>
  16.  
  17. <td><input type="checkbox" name="wybor" value="$POST[tak]"/ onchange='f(this)'>Wybór</td>
  18.  
  19. <td><input id=ch1 type="checkbox" name="grupa_2" value="$POST[1]"/>1</td>
  20. <td><input id=ch2 type="checkbox" name="grupa_2" value="$POST[2]"/>2</td>
  21. <td><input id=ch3 type="checkbox" name="grupa_2" value="$POST[3]"/>3</td>
  22. <td><input id=ch4 type="checkbox" name="grupa_2" value="$POST[4]"/>4</td>


Tylko potem ten sam if musi być w php. Ale to raczej oczywiste.
Robiłem z ręki więc może być błąd. Ale idea słuszna.
Szunaj85
W połowie działa. Nieważne, że odwrotnie niż napisałem, to akurat małe piwo.
Jednak checkbox-y z grupy 2 zostają zablokowane w momęcie gdy checkbox wybor zostanie zaznaczony,
wcześniej są cały czas niezablokowane, a ja chciałbym (tak jak już wcześniej napisałem) aby były zablokowane od samego początku do czasu jego zaznaczenia lub późniejszego odznaczenia.
Innymi słowy do czasu pierwszego wciśnięcia checkbox-a wybor skrypt nie wykonuje swojego zadania.
Jak to rozwiązać?

Edit:

Myślę, że jakoś sobie z tym poradziłem, aby skrypt działał od samego początku użyłem zdarzenia "onload", czyli zdarzenia zachodzącego w momencie wczytania (pobrania) strony www do przeglądarki.
Jeśli jednak znacie lepsze rozwiązanie podzielcie się nim.
Zastanawiam się też, czy powyższego kody nie da się jakoś zoptymalizować.
Czy za każdym razem trzeba pisać "document.getElementById..." dla każdego checkbox-a, czy dałoby radę to uprościć?
Turson
Co do uproszczenia to pętla się nada
[JAVASCRIPT] pobierz, plaintext
  1. for(var i=1;i<=4;i++){
  2. document.getElementById("ch"+i).disabled=true;
  3. }
[JAVASCRIPT] pobierz, plaintext
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.