Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][JavaScript][HTML]Checkbox
Forum PHP.pl > Forum > Przedszkole
wolacinio
witam.
mam pytanie otoz czy jest mozliwość zmieny wygladu Checkbox'a ? dokałdnie mi chodzi ze jak nacisne na niego to zmienia sie na inny obrazek a nie zeby było dalej fajka ?
w praktyce to tak: wlaczam strone i mozliwe jest wybraniu dwoch chceckbox'ow,przed nacisnieciem maja kolor czarny a po nacisnieciu np. czerwony(kolorowy)

oto input

  1. <input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij()" />


a funkcja w js to

  1. <script language="Javascript">
  2.  
  3. maxBoxow = 2;
  4. zaznaczoneBoxy = 0;
  5. function sprawdz(theBox) {
  6. if (zaznaczoneBoxy+1 > maxBoxow) {
  7. alert('Maksimum to '+maxBoxow);
  8. return false;
  9. }
  10. zaznaczoneBoxy++
  11.  
  12. return true;
  13. }
  14. function odejmij() {
  15. zaznaczoneBoxy--
  16.  
  17. }
  18.  
  19. </script>


Z góry dziekuje
wywrot4
Jeśli Cię dobrze zrozumiałem powinno Cie to nakierować:
http://mynthon.net/howto/JavaScript%20-%20...r%20inputs.html
http://mynthon.net/_projects/custom_checkboxes/

Opis bardzo skromny, ale patrząc do źródła to nic trudnego winksmiley.jpg w razie pytań pisz!
wolacinio
tak tak o to mi chodzi ;] tylko teraz pasuje połaczyć mój skrypt z tym co jest na tamtej stronie ;/ jak możesz to pomóż mi hehe ;] ja tez bede próbowac ;]
wywrot4
Łap gotowca winksmiley.jpg w 2 i 3 linijce zmień sobie te obrazki na swoje takie np 16x16px (UWAGA! nie możesz zamiast obrazka jako tło dać kolor tła bo 'wyleje' się na całe pole label!) Aby to działało dobrze potrzebny jest też malutki obojętnie jaki obrazek (patrz linijka 15) a wszystkie checkbox'y muszą być w polach label - wynika to z budowy skryptu (20 linijka) Myślę że teraz już dasz rade, pozmieniaj sobie te obrazki na swoje (przypominam 2, 3 i 15 linijka!) Nie wygląda to najlepiej możesz to umieścić w oddzielnym pliku lub jak sam wolisz winksmiley.jpg

  1. <style type="text/css">
  2. label.custom-chkon{background: url('http://icons3.iconfinder.netdna-cdn.com/data/icons/Sizicons/16x16/accept_green.png') no-repeat 0 50%; padding-left: 20px;display:block;}/* checkbox checked */
  3. label.custom-chkof{background: url('http://icons3.iconfinder.netdna-cdn.com/data/icons/Sizicons/16x16/cancel_round.png') no-repeat 0 50%; padding-left: 20px;display:block;}/* checkbox unchecked */
  4. <script type="text/javascript">
  5. function customFormButtons(o, cp){
  6. /*
  7. * CUSTOM CHECKBOXES AND RADIO INPUTS
  8. * date: 2008-09-16 19:00
  9. * please leave this note
  10. * free for any use
  11. * ENJOY!
  12. */
  13. var testImageName = 'http://mynthon.net/_projects/custom_checkboxes/test.gif'; // !!! IMPORTANT - LINK TO TEST IMAGE
  14. if(typeof(cp)=='undefined'){var cp = '';} //class prefix
  15. var IE/*@cc_on=1@*/
  16. var d = new Date();
  17. custChkRadioOnchangeEvent = function(e, o, cp){
  18. var lb = o.getElementsByTagName('label');
  19. for(var i=0; i<lb.length; i++){
  20. var inp = lb[i].getElementsByTagName('input')[0];
  21. if(inp.type=='checkbox'){
  22. if(inp.checked!=false){lb[i].className = cp + 'custom-chkon';}else{lb[i].className = cp + 'custom-chkof';}
  23. }else if(inp.type=='radio'){
  24. if(inp.checked!=false){lb[i].className = cp + 'custom-radon';}else{lb[i].className = cp + 'custom-radof';}
  25. }
  26. }
  27. }
  28. this.bindEvent = function (obj, typ, fn, o, cp){
  29. obj["e"+typ+fn] = fn;
  30. if (obj.addEventListener){
  31. obj.addEventListener(typ, function(event){obj["e"+typ+fn](event, o, cp)}, false);
  32. }else if(obj.attachEvent){
  33. obj[typ+fn] = function(){obj["e"+typ+fn](window.event, o, cp);}
  34. obj.attachEvent("on"+typ, obj[typ+fn]);
  35. }
  36. }
  37. this.customCheckableBtn = function(o){
  38. if(typeof(o)=='string'){o=document.getElementById(o);}
  39. var lab = o.getElementsByTagName('label');
  40. for(var i=0; i<lab.length; i++){
  41. var inp = lab[i].getElementsByTagName('input')[0];
  42. if(inp.type=='checkbox' || inp.type=='radio'){
  43. if(IE){
  44. if(inp.id==''){inp.setAttribute('id', cp + 'customCheckableID_' + d.getTime() + i);}
  45. lab[i].htmlFor = inp.id;
  46. this.bindEvent(inp, "click", custChkRadioOnchangeEvent, o, cp);
  47. }
  48. inp.style.position = 'absolute';
  49. inp.style.left = '-9999px';
  50. this.bindEvent(inp, "change", custChkRadioOnchangeEvent, o, cp);
  51. lab[i].className = (inp.type=='checkbox' ? cp + 'custom-chkof' : cp + 'custom-radof');
  52. }
  53. }
  54. custChkRadioOnchangeEvent(null, o, cp);
  55. }
  56. this.customCheckableInit = function(o){
  57. if(!document.getElementById || !document.getElementsByTagName){return;}
  58. //check if browser supports images
  59. var testImg = new Image();
  60. testImg.src = testImageName + '?' + d.getTime();
  61. testImg.onload = this.customCheckableBtn(o);
  62. }
  63. this.customCheckableInit(o);
  64. }
  65.  
  66. window.onload = function(){
  67. /*
  68. * example 1
  69. * add styles for all labels inside 'myForm' element
  70. * it doesn't have to be form element. It can be div or fieldset.
  71. */
  72. customFormButtons('myForm');
  73. }
  74. </script>
  75. <script language="Javascript">
  76. maxBoxow = 2;
  77. zaznaczoneBoxy = 0;
  78. function sprawdz(theBox) {
  79. if (zaznaczoneBoxy+1 > maxBoxow) {
  80. alert('Maksimum to '+maxBoxow);
  81. return false;
  82. }
  83. zaznaczoneBoxy++
  84.  
  85. return true;
  86. }
  87. function odejmij() {
  88. zaznaczoneBoxy--
  89. }
  90. <form id="myForm" method="get" action="">
  91. <label><input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij()" />odznaczone</label>
  92. <label><input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij()" />odznaczone</label>
  93. <label><input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij()" />odznaczone</label>
  94. <label><input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij()" />odznaczone</label>
  95. </form>

Pozdrawiam
wolacinio
zrobiłem juz wcześniej niz mi wysłałem ale dzieki winksmiley.jpg
jest tylko jeden problem bo wyswietla mi kazdy input pod wcześniejszym inputem czyli jeden pod drugim
mam zastosowana petle do inputow

  1. for($i=0; $i<=99; $i++) {
  2. if($i%10==0)
  3. $srodek .= '<br />';
  4.  
  5. $srodek .= '<label><input type="checkbox" name="i[]" class="input" value="'.$i.'" onclick="if (this.checked) return sprawdz(this); else odejmij(this)"/><font class="strona">'.$i.'</font></label>';
  6.  
  7. }


jeszcze przed dodanie ten nowej funkcji chodziło dobrze,10 inputów w jednej lini
dowiedziałem sie ze to prze to mi daje taki efekt display: block; ale jak to usune to mi sie robia takie małe kwadraciki z mało widocznym obrazkiem

prosze o to jeszcze i daje wam spokoj winksmiley.jpg
wywrot4
Zmień style na:
  1. label.custom-chkon{background: url('http://icons3.iconfinder.netdna-cdn.com/data/icons/Sizicons/16x16/accept_green.png') no-repeat 0 50%; padding-left: 20px; display: block; float: left;}
  2. label.custom-chkof{background: url('http://icons3.iconfinder.netdna-cdn.com/data/icons/Sizicons/16x16/cancel_round.png') no-repeat 0 50%; padding-left: 20px; display: block; float: left;}

tzn. ikonki sobie swoje podstaw winksmiley.jpg i jedna mała uwaga, w IE 8 źle działa twoje zabezpieczenie 'Maksimum to 2' otóż po zaznaczeniu dwóch checkbox'ów gdy kliknę na trzeci wyświetla się alert ale po kliknięciu OK jednak zaznacza się 3 checkbox. Nie znam na tyle JS by Ci pomóc ale pomyśl nad tym, i sprawdzaj po stronie serwera ile pól zostało zaznaczone!
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.