Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS] tablica z pól formularza + "zaznacz wszystkie"
Forum PHP.pl > Forum > Przedszkole
przemdro
Witam. Ostatnio trafiłem na dość ciekawy problem:

Mam w formularzu dużą ilość pól typu checkbox drukowanych z PHP. Zawsze, przekazywałem je spowrotem w taki sposób:
<input type="checkbox" <b>name="jezyki[]"</b> value="ang" />
<input type="checkbox" name="jezyki[]" value="ger" />
Dzięki temu wszystko ładnie ląduje w tabeli w PHP.
Chciałem do tego zastosować prosty skrypt który miałby zaznaczać lub odznaczać wszystkie checkbox'y naraz. Np. coś takiego:

Kod
<html>
             <head>
             <script type="text/javascript">
             function zmien(formularz){
             if(formularz.check_all.checked) {
             zaznacz(formularz)} else {
             odznacz(formularz)}}
            
             function zaznacz(formularz){
             for (i = 0; i < formularz.jezyki.length; i++){
             formularz.jezyki[i].checked=true}}
            
             function odznacz(formularz){
             for (i = 0; i < formularz.jezyki.length; i++){
             formularz.jezyki[i].checked=false }}
             </script>
             </head>
  
             <body>
   <form name="form1">
             <input type="checkbox" name="check_all" onclick="zmien(this.form)" />(zaznacz wszystkie)
             <input type="checkbox" name="jezyki" value="ang" />Angieski
             <input type="checkbox" name="jezyki" value="ger" />Niemiecki
             <input type="checkbox" name="jezyki" value="fr" />Francuski
             <input type="checkbox" name="jezyki" value="it" />Włoski
   </form>
             </body>
       </html>


I tu pojawia się mój problem. Kiedy zrobię tak:
<input type="checkbox" name="jezyki" .../>
to JavaScript widzi tablicę jezyki, a PHP próbuje wszystkie języki wpisać kolejno do jednej zmiennej.
A kiedy zrobię tak:
<input type="checkbox" name="jezyki[]" .../>
to PHP widzi tablicę jezyki, a JavaScript udaje że nic nie widzi...

Można jakoś napisać funkcję która "zaznaczy wszystkie" checkbox'y tak żeby zachować wszystkie Input'y jako tablicę w PHP?
erix
Kod
<script type="text/javascript">
             function zmien(formularz){
             if(formularz.check_all.checked) {
             zaznacz(formularz)} else {
             odznacz(formularz)}}
            
             function zaznacz(formularz){
             for (i = 0; i < formularz.elements.length; i++){
             formularz.elements[i].checked=true}}
            
             function odznacz(formularz){
             for (i = 0; i < formularz.elements.length; i++){
             formularz.elements[i].checked=false }}
             </script>


Ewentualnie dodaj sprawdzanie nazwy, jeśli nie chcesz wszystkich checkboksów z formy zaznaczyć. ;]
Sadu2
Ja np. używam takiego skryptu do zaznaczania checkboxów

Kod
function select_all()
{
  for (var i=0;i<document.form2.elements.length;i++)
  {
    var e =document. form2.elements[i];
    if ((e.name != 'check_all') && (e.type=='checkbox'))
    {
       e.checked = document.form2.check_all.checked;
    }
  }

}
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.