Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Checkbox włączający/ wylączający buton
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam,
w jaki sposób zrobić aby przycisk buton pojawiał się przy zaznaczeniu checkboxa. Chodzi mi o to aby user nie przeszedł do dalszej części skryptu jeśli nie dokona wyboru.
Na tę chwilę mam to:

  1. <form action="" name="generator" method="post">
  2. <button type="button" class="btn btn-default" style="width:130px;" onClick="java script:submit()">Dalej
  3. <input type=hidden name="generuj" value="generuj" />
  4. </button>
  5. <table width="100%" align="center" valign="center" border="1">
  6. <tr>
  7. <td align="center">Fakturuj</td>
  8. <td align="center">Nr spr</td>
  9. <td align="center">L.p.</td>
  10. <td align="center">id</td>
  11. <td align="center">Data </td>
  12. <td align="center">Nr </td>
  13. <td align="center">Nazwa</td>
  14. <td align="center">Ilość</td>
  15. <td align="center">Waga</td>
  16. <td align="center">cena</td>
  17. <td align="center">upust</td>
  18. <td align="center">% lub zł</td>
  19. <td align="center">Wartość</td>
  20. <td align="center">Odliczono [zł]</td>
  21. </tr>
  22. <?
  23. $lp = 0;
  24. $wartosc = 0;
  25. $zwrot = 0;
  26.  
  27. while($t=mysql_fetch_array($tabelkawynik)) {
  28. $lp++;
  29. <tr>
  30. <td align="center" width="10px">
  31. <input type="checkbox" onClick="if (this.checked) return sprawdz(this); else odejmij()" name="spr'.$t[nr_spr].'" id="wystaw'.$t[nr_spr].'" value="'.$t[nr_spr].'" />
  32.  
  33. </td>
  34. <td align="center">'.$lp.'</td>
  35. <td align="center">'.$t[nr_spr].'</td>
  36. <td align="center">'.$t[identyfikator].'</td>
  37. <td align="center">'.$t[data].'</td>
  38. <td align="center">'.$t[numer].'</td>
  39. <td align="center">'.$t[nazwa].'</td>
  40. <td align="center">'.$t[ilosc].'</td>
  41. <td align="center">'.$t[waga].'</td>
  42. <td align="center">'.$t[cenaprzedupustem].'</td>
  43. <td align="center">'.$t[upust].'</td>
  44. <td align="center">'.$t[rodzajzwrotu].'</td>
  45.  
  46. <td align="center">'.$wartosc.'</td>
  47. <td align="center">'.$zwrot.'</td>
  48.  
  49. </tr>';
  50. }
  51. ?>
  52. </table></form>
  53.  
  54.  
  55.  
miki22
Nie dałeś kodu tych funkcji JS sprawdz() i odejmij() więc ciężko powiedzieć co tam robią przy kliknięciu na checkbox-ie.
Ale jeśli tylko wyświetlają/ukrywają button to ten onClick mógł by wyglądać tak:
  1. dla buttonu dodać atrybut id="jakis_id"
  2. a w checkbox-ie:
  3. onClick="if (this.checked) document.getElementById(\'jakis_id\').style.removeProperty(\'display\'); else document.getElementById(\'jakis_id\').style.display = \'none\';)"


A tak wgl to radzę zapoznać się ze składnią heredoc. Wtedy nie trzeba jak ja wyżej znaków '\' przed apostrofami a i w twoim kodzie jakże lepiej i prościej by wyglądało:
  1. echo <<< MOJTEXT
  2. <tr>
  3. <td align="center" width="10px">
  4. <input type="checkbox" onClick="if (this.checked) return sprawdz(this); else odejmij()" name="spr{$t['nr_spr']}" id="wystaw{$t['nr_spr']}" value="{$t['nr_spr']}" />
  5.  
  6. </td>
  7. <td align="center">$lp</td>
  8. <td align="center">{$t['nr_spr']}</td>
  9. <td align="center">{$t['identyfikator']}</td>
  10. <td align="center">{$t['data']}</td>
  11. <td align="center">{$t['numer']}</td>
  12. <td align="center">{$t['nazwa']}</td>
  13. <td align="center">{$t['ilosc']}</td>
  14. <td align="center">{$t['waga']}</td>
  15. <td align="center">{$t['cenaprzedupustem']}</td>
  16. <td align="center">{$t['upust']}</td>
  17. <td align="center">{$t['rodzajzwrotu']}</td>
  18.  
  19. <td align="center">$wartosc</td>
  20. <td align="center">$zwrot</td>
  21.  
  22. </tr>
  23. MOJTEXT;
krzesik
oto wspomniane funkcje, sprawdzają mi ile jest zaznaczonych checkboxów, ale dodatkowo przy zaznaczonym dowolnym chcę pokazywać butona:
<script language="JavaScript">
maxBoxow = 2;
zaznaczoneBoxy = 0;
function sprawdz(theBox) {
if (zaznaczoneBoxy+1 > maxBoxow) {
alert('Nie można zaznaczyć więcej niż: '+maxBoxow+' szt');
return false;
}
zaznaczoneBoxy++
return true;
}
function odejmij() {
zaznaczoneBoxy--
}
</script>

Zrobiłem że działa w ten sposób:
<script language="JavaScript" type="text/javascript">
//<![CDATA[
function pokaz() {
obj=document.getElementById('ukryte');
objCheck=document.getElementById('zaznaczanie');
objlista = document.getElementById('lista');
if (objCheck.checked) {
obj.style.display="";
objlista.style.display="none";
}
else
{
obj.style.display="none";
objlista.style.display="";
}
}
//]]>
</script>
  1. <input type="checkbox" id="zaznaczanie" onClick="pokaz()" value="1" />

Mam z kolei też funkcję która kontroluje ilość zaznaczonych checkboxów
<script language="JavaScript">
maxBoxow = 2;
zaznaczoneBoxy = 0;
function sprawdz(theBox) {
if (zaznaczoneBoxy+1 > maxBoxow) {
alert('Nie można zaznaczyć więcej niż: '+maxBoxow+' szt');
return false;
}
zaznaczoneBoxy++
return true;
}
function odejmij() {
zaznaczoneBoxy--
}
</script>
  1. <input type="checkbox" id="zaznaczanie" onClick="if (this.checked) return sprawdz(this); else odejmij()" name="spr'.$t[nr_spr].'" value="'.$t[nr_spr].'" />

Jak połączyć to w całość? tak aby jeden checkbox wykonywał obydwie funkcje?
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.