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
<input type="checkbox" name="nazwa" value="wartosc">
powinno się zrobić
<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źć.
EditKorzystając z różnych informacji/kursów itp. znalezionych w necie napisałem takie coś:
<!--
selected = 0; // Ile zaznaczonych checkboxów
function swap(oForm, checkbox) {
// Jeżeli checkbox jest zaznaczony, zwiększmy liczbę zaznaczonych o jeden
if(oForm.name0.checked&&checkbox==0){
selected = selected+1;
}
else if(oForm.name1.checked&&checkbox==1){
selected = selected+1;
}
else if(oForm.name2.checked&&checkbox==2){
selected = selected+1;
}
else if(oForm.name3.checked&&checkbox==3){
selected = selected+1;
}
else if(oForm.name4.checked&&checkbox==4){
selected = selected+1;
}
else if(oForm.name5.checked&&checkbox==5){
selected = selected+1;
}
// Jeżeli nie jest, zmniejszmy liczbę zaznaczonych o jeden
else {
selected = selected-1;
}
// Zaznaczyliśmy już trzy. Reszta staje się niedostępna
if(selected==3){
if(!oForm.name0.checked){
oForm.name0.disabled=true;
}
if(!oForm.name1.checked){
oForm.name1.disabled=true;
}
if(!oForm.name2.checked){
oForm.name2.disabled=true;
}
if(!oForm.name3.checked){
oForm.name3.disabled=true;
}
if(!oForm.name4.checked){
oForm.name4.disabled=true;
}
if(!oForm.name5.checked){
oForm.name5.disabled=true;
}
}
// Nie, nie zaznaczyliśmy trzech. Wszystkie są dostępne
else {
oForm.name0.disabled=false;
oForm.name1.disabled=false;
oForm.name2.disabled=false;
oForm.name3.disabled=false;
oForm.name4.disabled=false;
oForm.name5.disabled=false;
}
}
//-->
<INPUT TYPE="checkbox" NAME="name0" onClick="swap(this.form, 0)" disabled>Checkbox 0
<BR> <INPUT TYPE="checkbox" NAME="name1" onClick="swap(this.form, 1)" disabled>Checkbox 1
<BR> <INPUT TYPE="checkbox" NAME="name2" onClick="swap(this.form, 2)" disabled>Checkbox 2
<BR> <INPUT TYPE="checkbox" NAME="name3" onClick="swap(this.form, 3)" disabled>Checkbox 3
<BR> <INPUT TYPE="checkbox" NAME="name4" onClick="swap(this.form, 4)" disabled>Checkbox 3
<BR> <INPUT TYPE="checkbox" NAME="name5" onClick="swap(this.form, 5)" disabled>Checkbox 3
<BR> <!--
// Wyłączamy disabled dla wszystkich inputów
myForm.name0.disabled=false;
myForm.name1.disabled=false;
myForm.name2.disabled=false;
myForm.name3.disabled=false;
myForm.name4.disabled=false;
myForm.name5.disabled=false;
//-->
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?
Edit2Dziękuję za szybką odpowiedź
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
<script LANGUAGE="javascript"> <!--
selected = 0;
function swap(oForm, checkbox) {
if(oForm.elements[checkbox].checked) selected = selected+1;
else selected = selected-1;
if(selected==3){
for (i=0;i<6;i++) {
if(!oForm.elements[i].checked) oForm.elements[i].disabled=true;
};
}
else {
for (i=0;i<6;i++) document.myForm.elements[i].disabled=false;
}
}
//-->
<INPUT TYPE="checkbox" NAME="name0" onClick="swap(this.form, 0)">Checkbox 0
<BR> <INPUT TYPE="checkbox" NAME="name1" onClick="swap(this.form, 1)">Checkbox 1
<BR> <INPUT TYPE="checkbox" NAME="name2" onClick="swap(this.form, 2)">Checkbox 2
<BR> <INPUT TYPE="checkbox" NAME="name3" onClick="swap(this.form, 3)">Checkbox 3
<BR> <INPUT TYPE="checkbox" NAME="name4" onClick="swap(this.form, 4)">Checkbox 3
<BR> <INPUT TYPE="checkbox" NAME="name5" onClick="swap(this.form, 5)">Checkbox 3
<BR>
Ten post edytował L_Devil 18.06.2005, 20:19:52
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.