Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js/html] Zaznacz/odznacz
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
kaszanka
Hi,

Mam kodzik:

  1. <script type="text/javascript">
  2. function checkAll(c){
  3. for(var i=0, t=document.forms['form'].elements['id_send'];i<t.length;i++){
  4. if(t[i].type.toLowerCase()=='checkbox'){
  5. t[i].checked=c;
  6. }
  7. }
  8. }

i kod html:
  1. <form method="post" action="" name=form>
  2. <input type="checkbox" onclick="checkAll(this.checked)">&nbsp; zaznacz / odznacz wszystko
  3. <input type="checkbox" class="checkbox" name="id_send[]" value="'.['pozycja:id'].'"> // tu jest pętla php gdzie 'id_send' idzie to tablicy
  4. </form>


I teraz w przypadku zapisu:
<input type="checkbox" class="checkbox" name="id_send" value="'.['pozycja:id'].'">
działa zaznaczanie wszystkich checkbox, natomast jak w pierwszym przykładzie gdy jest name="id_send[]" to nie działa.
Jak to zmodyfikować?
wookieb
przeiteruj wszystkie elementy formularza i wykonuj zaznaczenie/odznaczenie na tych u ktorych

Kod
name.indexOf('id_send')==0
kaszanka
hmm, a co w przypadku gdy inputów jest czasem dwa a czasem sto?
A może czegoś nie rozumiem? smile.gif
wookieb
To i tak je znajdzie. Musisz tylko przeiterowac formularz.elements
kamil4u
Jeszcze dodam kilka uwag do tej prostej pętli:
- nie zadeklarowana zmienne t
- przy każdym 'obrocie' funkcji sprawdzasz wielkość tablicy "i<t.length;" co tylko nie potrzebnie przedłuża czas działania smile.gif
- i<t.length; warunek jest i tak niepotrzebny

Moja propozycja:
Kod
<script type="text/javascript">
function checkAll(c,t,i){
for(i=0; t=document.forms['form'].elements['id_send'][i++];){
if(t.type.toLowerCase()=='checkbox'){
t.checked=c;
}
}
}
</script>


Wiem, że to w tym skrypcie to nieistotne, ale gdy będziesz pisał(może już piszesz) większe skrypty warto zwracać uwagę na takie 'pierdoły' smile.gif
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.