ďťż

[js] zaznaczanie checkbox'ow

       

Podstrony


telcocafe

Witam.Mam oto taki kawalek kodu.
&lt;script language="javascript"> function showHide() { document.form.a2.disabled = document.form.a3.disabled = document.form.a4.disabled = !document.form.a1.checked; document.form.a2.checked = document.form.a3.checked = document.form.a4.enabled = document.form.a1.checked; document.form.b2.disabled = document.form.b3.disabled = document.form.b4.disabled = !document.form.b1.checked; document.form.b2.checked = document.form.b3.checked = document.form.b4.enabled = document.form.b1.checked; } </script>

oraz formularz

<form action="" name="form"> <input name="a1" type="checkbox" value="" onclick="showHide();"/> <input name="a2" type="checkbox" disabled="disabled" value="ch2v"/> <input name="a3" type="checkbox" disabled="disabled" value="ch3v"/> <input name="a4" type="checkbox" disabled="disabled" value="ch4v"/> <hr> <input name="b1" type="checkbox" value="" onclick="showHide();"/> <input name="b2" type="checkbox" disabled="disabled" value="ch2v"/> <input name="b3" type="checkbox" disabled="disabled" value="ch3v"/> <input name="b4" type="checkbox" disabled="disabled" value="ch4v"/> </form>

I prawie działa,ale nie dokońca:(
Otóż gdy zaznacze pierwszego checkboxa( "a1" ) pozostałe 3 w tej linijce staja się aktywne oraz checkbox 2oraz 3 (a2,a3) sa zaznaczone. Następnie zaznaczam checkboxa b1 dzieje sie analogicznie jak w pierwszym (checkbox b2,b3,b4 staja sie aktywne a b2,b3 dodatkowo są zaznaczane).I tak ma być.
Problem pojawia się gdy np odznaczę a2 a następnie aktywuję b1.Wtedy a2 zaznacza się samo.A ma zostać odznaczone.I nie wiem jak z tego wybrnąć.
pozdrawiam



<script language="javascript"> function showHide(d) { document.getElementById('d' + 2).disabled = document.getElementById('d' + 3).disabled = document.getElementById('d' + 4).disabled = !document.getElementById('d' + 1).checked; document.getElementById('d' + 2).checked = document.getElementById('d' + 3).checked = document.getElementById('d' + 1).checked; } </script>document.form.a4.enabledNie jest potrzebne, skoro stosujesz disabled.<form action="" name="form"> <input id="a1" name="a1" type="checkbox" value="" onclick="showHide('a');"/> <input id="a2" name="a2" type="checkbox" disabled="disabled" value="ch2v"/> <input id="a3" name="a3" type="checkbox" disabled="disabled" value="ch3v"/> <input id="a4" name="a4" type="checkbox" disabled="disabled" value="ch4v"/> <hr> <input id="b1" name="b1" type="checkbox" value="" onclick="showHide('b');"/> <input id="b2" name="b2" type="checkbox" disabled="disabled" value="ch2v"/> <input id="b3" name="b3" type="checkbox" disabled="disabled" value="ch3v"/> <input id="b4" name="b4" type="checkbox" disabled="disabled" value="ch4v"/> </form>

THX działa.

Tylko był mały błąd.
Powinno być tak:
function showHide(d) { document.getElementById(d + 2).disabled = document.getElementById(d + 3).disabled = document.getElementById(d + 4).disabled = !document.getElementById(d + 1).checked; document.getElementById(d + 2).checked = document.getElementById(d + 3).checked = document.getElementById(d + 1).checked; }
Zmienna d nie może być w ''. Poprawiłem działa:)

A teraz mam jeszcze jeden problem.
Gdy chce zapisac zaznaczone checkboxy do bazy pojawiają się błędy. Tzn. Zaznaczam pierwszego checkboxa i aktywuję pozostałe(funkcją powyżej). Jest to lista userów. Zaznaczam 2i np. 4 Zapis do bazy bedzie wygladal tak: ('user1', '1','0','1',''), gdy zaznacze w drugiej linijce pierwszego checkboxa również aktywują się pozostałe. I gdy zaznaczę 3 to zapis wygladą tak:
('user1', '1','0','1','')
('user2', '0','0','0','')
a powinno być tak:
('user1', '1','0','1','')
('user2', '0','1','0','')
I nie wiem jak to poprawić.

$j=0; foreach( $_POST['user_grupy'] as $test ) { $user_widzi = ( $_POST['user_grupy2'][$j] == true ) ? 1 : 0; $user_dodaje = ( $_POST['user_grupy3'][$j] == true ) ? 1 : 0; $user_kasuje = ( $_POST['user_grupy4'][$j] == true ) ? 1 : 0; echo "INSERT INTO uprawnienia_users (id_uzytkownika,widzi,dodaje,usuwa,id_dokumentu) VALUES ('$test', '$user_widzi','$user_dodaje','$user_kasuje','$id_zadania' )<br>"; $j++;

<form method="post" action="c.php"> <input type="checkbox" name="user_grupy[]" value="user1" id="box" ></div> <input type="checkbox" name="user_grupy2[]" value="1" id=\"box" > <input type="checkbox" name="user_grupy3[]" value="1" id=\"box" > <input type="checkbox" name="user_grupy4[]" value="1" id=\"box" > <hr> <input type="checkbox" name="user_grupy[]" value="user2" id="box" ></div> <input type="checkbox" name="user_grupy2[]" value="1" id=\"box" > <input type="checkbox" name="user_grupy3[]" value="1" id=\"box" > <input type="checkbox" name="user_grupy4[]" value="1" id=\"box" > <p><input type="submit" value="ok"> </form>

No tak, to ze zmęczenia dodałem te apostrofy :-)
Niezbyt rozumiem, ale tak: Jeśli wysyłasz niezaznaczony checkbox, nie jest on widoczny w tablicy globalnej $_POST. Tak samo jest, gdy checkbox, mimo zaznaczenia, ma stan disabled. Zatem poprawnie powinno byćforeach( $_POST['user_grupy'] as $j => $test ) { $user_widzi = isset($_POST['user_grupy2'][$j]) ? 1 : 0; $user_dodaje = isset($_POST['user_grupy3'][$j]) ? 1 : 0; $user_kasuje = isset($_POST['user_grupy4'][$j]) ? 1 : 0; echo "INSERT INTO uprawnienia_users (id_uzytkownika,widzi,dodaje,usuwa,id_dokumentu) VALUES ('$test', '$user_widzi','$user_dodaje','$user_kasuje','$id_zadania' )<br>";A tak poza tym, to jest jeszcze jeden problem. Poprawny kod:<form method="post" action="c.php"> <input type="checkbox" name="user_grupy[0]" value="user1" id="box" ></div> <input type="checkbox" name="user_grupy2[0]" value="1" id=\"box" > <input type="checkbox" name="user_grupy3[0]" value="1" id=\"box" > <input type="checkbox" name="user_grupy4[0]" value="1" id=\"box" > <hr> <input type="checkbox" name="user_grupy[1]" value="user2" id="box" ></div> <input type="checkbox" name="user_grupy2[1]" value="1" id=\"box" > <input type="checkbox" name="user_grupy3[1]" value="1" id=\"box" > <input type="checkbox" name="user_grupy4[1]" value="1" id=\"box" > <p><input type="submit" value="ok"> </form>I to powinno rozwiązać Twój problem.



Dzięki wielkie. Działa.
Pozdro

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.