Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zaznaczenie trzech pozycji w checkboxach, potem reszta staje się disabled
L_Devil
post 17.06.2005, 21:33:50
Post #1





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Jestem zupełnie zielony w sprawach Jscript, natomiast potrzebuję na stronie kilku checkboxów. Po wybraniu trzech z nich reszta powinna się zrobić disabled, tzn z
  1. <input type="checkbox" name="nazwa" value="wartosc">
powinno się zrobić
  1. <input type="checkbox" disabled="disabled" name="nazwa" value="wartosc">


Jak to najlepiej napisać?

Szukałem zarówno na forum jak i w internecie i nie mogłem znaleźć.


Edit
Korzystając z różnych informacji/kursów itp. znalezionych w necie napisałem takie coś:
  1. <script LANGUAGE="Jscript">
  2. <!--
  3. selected = 0; // Ile zaznaczonych checkboxów
  4.  
  5. function swap(oForm, checkbox) {
  6.  
  7. // Jeżeli checkbox jest zaznaczony, zwiększmy liczbę zaznaczonych o jeden
  8.  
  9. if(oForm.name0.checked&&checkbox==0){
  10. selected = selected+1;
  11. }
  12. else if(oForm.name1.checked&&checkbox==1){
  13. selected = selected+1;
  14. }
  15. else if(oForm.name2.checked&&checkbox==2){
  16. selected = selected+1;
  17. }
  18. else if(oForm.name3.checked&&checkbox==3){
  19. selected = selected+1;
  20. }
  21. else if(oForm.name4.checked&&checkbox==4){
  22. selected = selected+1;
  23. }
  24. else if(oForm.name5.checked&&checkbox==5){
  25. selected = selected+1;
  26. }
  27.  
  28. // Jeżeli nie jest, zmniejszmy liczbę zaznaczonych o jeden
  29.  
  30. else {
  31. selected = selected-1;
  32. }
  33.  
  34. // Zaznaczyliśmy już trzy. Reszta staje się niedostępna
  35.  
  36. if(selected==3){
  37. if(!oForm.name0.checked){
  38. oForm.name0.disabled=true;
  39. }
  40. if(!oForm.name1.checked){
  41. oForm.name1.disabled=true;
  42. }
  43. if(!oForm.name2.checked){
  44. oForm.name2.disabled=true;
  45. }
  46. if(!oForm.name3.checked){
  47. oForm.name3.disabled=true;
  48. }
  49. if(!oForm.name4.checked){
  50. oForm.name4.disabled=true;
  51. }
  52. if(!oForm.name5.checked){
  53. oForm.name5.disabled=true;
  54. }
  55. }
  56.  
  57. // Nie, nie zaznaczyliśmy trzech. Wszystkie są dostępne
  58.  
  59. else {
  60. oForm.name0.disabled=false;
  61. oForm.name1.disabled=false;
  62. oForm.name2.disabled=false;
  63. oForm.name3.disabled=false;
  64. oForm.name4.disabled=false;
  65. oForm.name5.disabled=false;
  66. }
  67. }
  68. //-->
  69. </HEAD>
  70. <form name="myForm">
  71. <INPUT TYPE="checkbox" NAME="name0" onClick="swap(this.form, 0)" disabled>Checkbox 0<BR>
  72. <INPUT TYPE="checkbox" NAME="name1" onClick="swap(this.form, 1)" disabled>Checkbox 1<BR>
  73. <INPUT TYPE="checkbox" NAME="name2" onClick="swap(this.form, 2)" disabled>Checkbox 2<BR>
  74. <INPUT TYPE="checkbox" NAME="name3" onClick="swap(this.form, 3)" disabled>Checkbox 3<BR>
  75. <INPUT TYPE="checkbox" NAME="name4" onClick="swap(this.form, 4)" disabled>Checkbox 3<BR>
  76. <INPUT TYPE="checkbox" NAME="name5" onClick="swap(this.form, 5)" disabled>Checkbox 3<BR>
  77. </form>
  78. </BODY>
  79. </HTML>
  80. <script LANGUAGE="Jscript">
  81. <!--
  82.  
  83. // Wyłączamy disabled dla wszystkich inputów
  84.  
  85. myForm.name0.disabled=false;
  86. myForm.name1.disabled=false;
  87. myForm.name2.disabled=false;
  88. myForm.name3.disabled=false;
  89. myForm.name4.disabled=false;
  90. myForm.name5.disabled=false;
  91. //-->
Ma to jednak dwie podstawowe wady:
a.) Jest DŁUGIE
b.) Działa tylko pod Internet Exploler

Wie ktoś może jak zaradzić tym dwóm niedogodnościom?

Edit2
Dziękuję za szybką odpowiedź ohmy.gif
Jeżeli ktoś jest ciekaw moich wyników mojej własnej pracy metodą prób i przeważających błędów to:
a.) w nagłówku powinno być <script LANGUAGE="javascript"> - wtedy działa pod wszystkimi przeglądarkami
b.) Skrócony kod
  1. <script LANGUAGE="javascript">
  2. <!--
  3. selected = 0;
  4. function swap(oForm, checkbox) {
  5. if(oForm.elements[checkbox].checked) selected = selected+1;
  6. else selected = selected-1;
  7. if(selected==3){
  8. for (i=0;i<6;i++) {
  9. if(!oForm.elements[i].checked) oForm.elements[i].disabled=true;
  10. };
  11. }
  12. else {
  13. for (i=0;i<6;i++) document.myForm.elements[i].disabled=false;
  14. }
  15. }
  16. //-->
  17. </HEAD>
  18. <form name="myForm">
  19. <INPUT TYPE="checkbox" NAME="name0" onClick="swap(this.form, 0)">Checkbox 0<BR>
  20. <INPUT TYPE="checkbox" NAME="name1" onClick="swap(this.form, 1)">Checkbox 1<BR>
  21. <INPUT TYPE="checkbox" NAME="name2" onClick="swap(this.form, 2)">Checkbox 2<BR>
  22. <INPUT TYPE="checkbox" NAME="name3" onClick="swap(this.form, 3)">Checkbox 3<BR>
  23. <INPUT TYPE="checkbox" NAME="name4" onClick="swap(this.form, 4)">Checkbox 3<BR>
  24. <INPUT TYPE="checkbox" NAME="name5" onClick="swap(this.form, 5)">Checkbox 3<BR>
  25. </form>
  26. </HTML>


Ten post edytował L_Devil 18.06.2005, 20:19:52


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:13