Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][HTML][PHP]Grupa checkbox-ów zależna od innego checkbox-a
Szunaj85
post
Post #1





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


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>


Ten post edytował Szunaj85 9.12.2013, 17:53:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
timon27
post
Post #2





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


  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.

Ten post edytował timon27 9.12.2013, 19:07:21
Go to the top of the page
+Quote Post
Szunaj85
post
Post #3





Grupa: Zarejestrowani
Postów: 392
Pomógł: 7
Dołączył: 11.05.2008

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


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ć?

Ten post edytował Szunaj85 11.12.2013, 14:19:57
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


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


Ten post edytował Turson 11.12.2013, 14:25:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 19:24