Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][javascript]sprawdzanie wielu elementów z tablicy
Forum PHP.pl > Forum > Przedszkole
pag-r
Mam taki kawałek kodu
  1. <form method="get" action="" name="rent">
  2. maszyny
  3. <input type="radio" value="A" name="radioT[]">A
  4. <input type="radio" value="B" name="radioT[]">B
  5. <br />narzedzia
  6. <input type="checkbox" value="1" name="boxTools[]">1
  7. <input type="checkbox" value="2" name="boxTools[]">2
  8. <br /><input type="submit" value="Submit">
  9. </form>

Dane z radio i checkboxów muszą być tablicowane, bo potrzebne mi są informacje z nich. Ale potrzebuję też metody sprawdzenia czy którykolwiek z radio i chociaż 1 z checkboxów jest zaznaczony. Tych radio i checkboxów jest oczywiście więcej, bo pobierane są z bazy danych. W js napisalem sobie skrypt, który to działał przy założeniu, gdy name="nazwa", ale już nie działa przy name="nazwa[]". Googlowałem i znalazłem metode getElementsByClass, ale jej już zastosować nie potrafie.
  1. function Check()
  2. {
  3. var txt = document.getElementById("infos");
  4. var choiceR = false;
  5. var choiceB = false;
  6. for(i = 0; i < rent.radioT.length;i++)
  7. {
  8. for (counter = 0; counter < rent.radioT[i].length; counter++)
  9. {
  10. if (rent.radioT[counter].checked) choiceR = true;
  11. }
  12. }
  13. for (counter = 0; counter < rent.boxTools.length; counter++)
  14. {
  15. if (rent.boxTools[counter].checked)
  16. { choiceB = choiceB + 1; }
  17. }
  18. if (!choiceB && choiceR)
  19. {
  20. infos.appendChild(document.createTextNode("Wybierz narzedzię."));
  21. return (false);
  22. }
  23. else if (choiceB && !choiceR)
  24. {
  25. infos.appendChild(document.createTextNode("Wybierz maszynę."));
  26. return (false);
  27. }
  28. else if(!choiceB && !choiceR)
  29. {
  30. infos.appendChild(document.createTextNode("Wybierz maszynę oraz minimum jedno narzedzię"));
  31. return (false);
  32. }
  33. else
  34. {
  35. return (true);
  36. }
  37. }

Co powinenem zmodyfikować, aby móc sprawdzać każdy z checkboxów i radio, zachowując przy tym zapis z nazwa[]?
trucksweb
nie ma czegos takiego jak
Cytat
"narzędzię"



zmien do swojego kodu
  1. var pytania = getElementsByClassName($$('strona'),"chk");
  2.  
  3. for(indx in pytania) {
  4. var pytanie = pytania[indx];
  5.  
  6. if(pytanie.className == 'chk') {
  7. //sprawdzasz czy jest zaznaczony i obslugujesz jakies akcje
  8. }
  9. }
  10. }
  11.  
  12.  
pag-r
Fajnie, literówki, akurat były najmniej ważne, no ale ok. Ta funkcja mi nie pomoże, bo ilość funkcji wewnątrz jest tak duża, że i tak tego nie wyskrobię. Gdybym był obstukany w js, to nie pisałbym w dziale przedszkole. W każdym razie dziękuje za odpowiedź.
trucksweb
jakbys napisalo to w jquery wszystko zajeloby max 10linijek

a jaki tu masz problem ?
najpier pobierasz liste wszystkich checkboxow z klasa "chk" z diva o id "strona"
potem funkcja for przechodzisz po kazdym i funkcja if sprawdzasz czy sa zaznaczone

wsio
bastard13
do elementów możesz się dostać przez window.document.nazwa_formularza.elements[] (tablica elementów w formularzu o nazwie nazwa_formularza)
i zrobić w pętli:
  1. x=window.document.nazwa_formularza;
  2. /*dla twojego radio.
  3. Zakres przez, który przebiega pętla for to pierwszy element radio i ostatni */
  4. for(i=0;i<2;i++) if(x.elements[i].checked==true) return 'zaznaczone';

A co do nazwy w stylu 'nazwa[]' to nie przejdzie przez żaden język programowania (html puszcza, bo nie jest on jp), a to dlatego, że słowo [] jest zarezerwowane dla tablic, więc niestety żeby odwoływać się do tego przez JS musisz zmienić nazwę.
GetElementByClass używasz dokładnie tak jak GetElementById z tym, że spotkałem się parę razy, że przeglądarka nie wiedziała co zrobić z taką funkcją, czego nie miałem nigdy z GetElById.
pag-r
Rozwiązałem to w taki sposób, może nie jest on elegancki ale działa. Dzięki za pomoc. Jak czas pozwoli usiąde na jquery/mootools. smile.gif
  1. $rd = isset($_POST['radioT']);
  2. $bt = isset($_POST['boxTools']);
  3. $chck = isset($_POST['check']);
  4. if($chck && !$rd && $bt)
  5. {
  6. echo '<div class="tab">Musisz wybrać chociaż jedno radio</div>';
  7. }
  8. elseif($chck && $rd && !$bt)
  9. {
  10. echo '<div class="tab">Musisz wybrać chociaż jeden checkbox</div>';
  11. }
  12. elseif($chck && !$rd && !$bt)
  13. {
  14. echo '<div class="tab">Musisz wybrać chociaż jedno radio i minumum jeden checkbox</div>';
  15. }
  16. elseif($chck && $rd && $bt)
  17. {
  18. echo 'ok';
  19. }
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.