Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Określona ilość zaznczonych checkboxów
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Fallout
Witam,

Szukałem, ale nawet ciężko sprecyzować do wyszukania co chce:)

Chodzi o to, że:

1. Pobieram z bazy jakieś dane, i dla każdego wiersza jest checkbox
2. JS ma mi pomóc w tym, że po zaznaczeniu np. dwóch, reszta chceckbów staje sie nieaktywna do momentu, gdy jeden z tych dwóch zaznaczonych nie zostanie odznaczony

ogółem mówiąc ma to zapobiec zaznaczeniu więcej niż 2 checkboxów z kilkunastu dostępnych, oraz ochronić użyszkodnika przed pomyłką smile.gif

Niestety JS nie miałem nigdy czasu postudiować, a zależy mi na czasie, poszukiwania zawiodły więc ktoś może znajdzie chwilkę na napisanie, wydaje mi się niezbyt wymagającego skryptu smile.gif Z góry dziękuje!
TomASS
Specjalnie dla Ciebie:
  1. </head>
  2. function sprawdz_ile_zaznaczonych(){
  3. var ile = 0;
  4. for(var i=0; i<document.formularz.length; i++){
  5. if((document.forms.formularz.elements[i].type)=="checkbox"){
  6. if(document.forms.formularz.elements[i].checked) ile++;
  7. }
  8. }
  9. return ile;
  10. }
  11.  
  12. function deaktywacja(){
  13. if(sprawdz_ile_zaznaczonych()>=2){
  14. for(var i=0; i<document.formularz.length; i++){
  15. if((document.forms.formularz.elements[i].type)=="checkbox"){
  16. if(!document.forms.formularz.elements[i].checked)
  17. document.forms.formularz.elements[i].disabled=true;
  18. }
  19. }
  20. }
  21. else{
  22. for(var i=0; i<document.formularz.length; i++){
  23. if((document.forms.formularz.elements[i].type)=="checkbox")
  24. document.forms.formularz.elements[i].disabled=false;
  25. }
  26. }
  27. }
  28.  
  29. <form name="formularz">
  30. <input type="checkbox" name="ch1" id="ch1" onclick="deaktywacja();">
  31. <input type="checkbox" name="ch2" id="ch2" onclick="deaktywacja();">
  32. <input type="checkbox" name="ch3" id="ch3" onclick="deaktywacja();">
  33. <input type="checkbox" name="ch4" id="ch4" onclick="deaktywacja();">
  34. <input type="checkbox" name="ch5" id="ch5" onclick="deaktywacja();">
  35. <input type="checkbox" name="ch6" id="ch6" onclick="deaktywacja();">
  36. <input type="checkbox" name="ch7" id="ch7" onclick="deaktywacja();">
  37. <input type="checkbox" name="ch8" id="ch8" onclick="deaktywacja();">
  38. <input type="checkbox" name="ch9" id="ch9" onclick="deaktywacja();">
  39. <input type="checkbox" name="ch10" id="ch10" onclick="deaktywacja();">
  40. <input type="checkbox" name="ch11" id="ch11" onclick="deaktywacja();">
  41. <input type="checkbox" name="ch12" id="ch12" onclick="deaktywacja();">
  42.  
  43. </form>
  44. </body>
  45. </html>


Dodałem także aktywowanie spowrotem w przypadku, gdy były wciśnięte dwa checkobxy i użytkownik "odchaczył" jednego.
Fallout
Dziękuję, zabieram sie do pracy smile.gif

No tak zapomniałem tylko, że u mnie każdy wiersz to osobny formularz:)

  1. while($r = mysql_fetch_array($w))
  2. {
  3.  (...)
  4.  
  5. $zmien  = '<input type="image" src="zmien.gif" name="do" value="zmien" ALT="Zmień dane zdjęcia" />';
  6. $usun = '<input type="image" src="del.gif" name="do" value="usun" ALT="Usuń zdjęcie" />';
  7. $gen = '<input type="image" src="generate.gif" name="do" value="generuj" ALT="Generuj miniatruę" />';
  8. $delmin = '<input type="image" src="del.gif" name="do" value="skasuj" ALT="Skasuj miniaturę" />';
  9. ?>
  10. <!-- Formularz START -->
  11. <form action="<?='?co=zarzadzaj&amp;gid='.$gid.'&amp;pid='.$pid; ?>" method="post" name="formularz">
  12. <input type="hidden" value="<?=$fid;?>" name="zid" />
  13. <input type="hidden" value="<?=$gid;?>" name="gid" />
  14. <tr align="center">
  15. <td><? SelectBox(TR_Box('pies_id','pies_nazwa','psy'),'npid',$pid); ?></td>
  16. <td><?=$fotka;?></td>
  17. <td><input type="checkbox" value="<?=$fid;?>" name="chg" onclick="deaktywacja();" /></td>
  18. <td><input type="text" value="<?=$ops;?>" name="opis" /></td>
  19. <td><input type="text" value="<?=$plk;?>" name="plik" readonly /></td>
  20. <td><? SelectBox(TR_Box('galeria_id','galeria_katalog','galerie'),'ngid',$gid); ?></td>
  21. <td><? if(!file_exists($mini)) echo $gen;?></td>
  22. <td><? if(file_exists($mini)) echo $delmin;?></td>
  23. <td><?=$zmien;?></td>
  24. <td><?=$usun;?></td>
  25. </tr>
  26. </form>
  27. <!-- Formularz Koniec -->
  28. <?
  29. }


co skutkuje tym, ze nie dziala smile.gif Masz może jakiś pomysł aby to obejść?
TomASS
to zamiast po nazwie formularza możesz się do niego dostać również za pomocą forms[j] gdzie j to numer formularza. Wystarczy troszkę przerobić skrypt JS:
  1. </head>
  2. function sprawdz_ile_zaznaczonych(){
  3. var ile = 0;
  4.  
  5.  
  6. for(var j=0;j<document.forms.length; j++){
  7. for(var i=0; i<document.forms[j].length; i++){
  8. if((document.forms[j].elements[i].type)=="checkbox"){
  9. if(document.forms[j].elements[i].checked) ile++;
  10. }
  11. }
  12. }
  13. return ile;
  14. }
  15.  
  16. function deaktywacja(){
  17. if(sprawdz_ile_zaznaczonych()>=2){
  18. for(var j=0;j<document.forms.length; j++){
  19. for(var i=0; i<document.forms[j].length; i++){
  20. if((document.forms[j].elements[i].type)=="checkbox"){
  21. if(!document.forms[j].elements[i].checked)
  22. document.forms[j].elements[i].disabled=true;
  23. }
  24. }
  25. }
  26. }
  27. else{
  28. for(var j=0;j<document.forms.length; j++){
  29. for(var i=0; i<document.forms[j].length; i++){
  30. if((document.forms[j].elements[i].type)=="checkbox")
  31. document.forms[j].elements[i].disabled=false;
  32. }
  33. }
  34. }
  35.  
  36. }
  37.  
  38. <form name="formularz">
  39. <input type="checkbox" name="ch1" id="ch1" onclick="deaktywacja();">
  40. <input type="checkbox" name="ch2" id="ch2" onclick="deaktywacja();">
  41. <input type="checkbox" name="ch3" id="ch3" onclick="deaktywacja();">
  42. <input type="checkbox" name="ch4" id="ch4" onclick="deaktywacja();">
  43. <input type="checkbox" name="ch5" id="ch5" onclick="deaktywacja();">
  44. </form>
  45.  
  46. <form name="formularz">
  47. <input type="checkbox" name="ch6" id="ch6" onclick="deaktywacja();">
  48. <input type="checkbox" name="ch7" id="ch7" onclick="deaktywacja();">
  49. <input type="checkbox" name="ch8" id="ch8" onclick="deaktywacja();">
  50. <input type="checkbox" name="ch9" id="ch9" onclick="deaktywacja();">
  51. </form>
  52.  
  53. <form name="formularz">
  54. <input type="checkbox" name="ch10" id="ch10" onclick="deaktywacja();">
  55. <input type="checkbox" name="ch11" id="ch11" onclick="deaktywacja();">
  56. <input type="checkbox" name="ch712" id="ch12" onclick="deaktywacja();">
  57. </form>
  58.  
  59. </body>
  60. </html>
Fallout
Działa idealnie, dziękuje!
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.