Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > кроссбраузерное отключение чекбоксов


Автор: MoXxX 14.2.2010, 03:41
есть следующая ф-ция
Код

var bl=[];
function epic(num){
   r=document.all(num.id);
   bl['l']=0;
   bl['r']=0;
   for(i=0;i<r.length;i++){
     if(r[i].name=='lblock[]' && r[i].checked){
      bl['l']++; 
    }else{ 
      if(r[i].name=='rblock[]' && r[i].checked){ 
    bl['r']++;
    }
      }
    }
   for(i=0;i<r.length;i++){
 if(num.name[1]=='k' && r[i].name[0]==num.name[0]){
  if(r[i]!=num && num.checked){
   r[i].checked=false;
   r[i].disabled=true;
  }else{
r[i].disabled=false;
}
}
 if(num.name[1]=='b' && r[i].name[0]==num.name[0]){ 
r[i].disabled=(r[i]!=num&&((r[i].name[1]=='k'&&bl[r[i].name[0]]>0)||num.checked&&bl[r[i].name[0]]>1&&!r[i].checked));}
   }
}

форма к ней
Код

<form method=POST action='battle.php?page=battle'>
<input type=hidden name=opponent value=''+tname+''>
<table width=178 height=111 bgcolor=#e5e2d4>
<tr><td background="img/doll.gif" valign=top width=79>
<div style="position:relative;left:1px;">
<input type=checkbox name=rkick value=1 style="position:absolute; top:-1px; left:20px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=lkick value=1 style="position:absolute; top:-1px; left:32px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=rkick value=2 style="position:absolute; top:22px; left:20px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=lkick value=2 style="position:absolute; top:22px; left:32px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=rkick value=3 style="position:absolute; top:42px; left:-5px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=lkick value=3 style="position:absolute; top:42px; left:7px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rkick value=4 style="position:absolute; top:42px; left:46px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lkick value=4 style="position:absolute; top:42px; left:58px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rkick value=5 style="position:absolute; top:72px; left:20px;" onclick='javascript:epic(this);' id='bc'>
<input type=checkbox name=lkick value=5 style="position:absolute; top:72px; left:32px;" onclick='javascript:epic(this);' id='bc'>
</div>
</td><td width=20></td><td background="img/doll.gif" valign=top width=79>
<div style="position:relative;left:1px;">
<input type=checkbox name=rblock[] value=1 style="position:absolute; top:-1px; left:20px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lblock[] value=1 style="position:absolute; top:-1px; left:32px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rblock[] value=2 style="position:absolute; top:22px; left:20px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lblock[] value=2 style="position:absolute; top:22px; left:32px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rblock[] value=3 style="position:absolute; top:42px; left:-5px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lblock[] value=3 style="position:absolute; top:42px; left:7px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rblock[] value=4 style="position:absolute; top:42px; left:46px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lblock[] value=4 style="position:absolute; top:42px; left:58px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=rblock[] value=5 style="position:absolute; top:72px; left:20px;" onclick='epic(this);' id='bc'>
<input type=checkbox name=lblock[] value=5 style="position:absolute; top:72px; left:32px;" onclick='epic(this);' id='bc'>
</div>
</td></tr>
</table>
<input type=submit value='Удар' class=standbut name=fight onClick="fight.disabled = true; document.forms[0].submit()">
</form>

работает в opera/FF, нужно подружить с IE (который в свою очередь не выдает никаких ошибок)

Автор: bars80080 14.2.2010, 13:34
интересная ситуация, так как судя по коду он должен работать только в ИЕ

вам никто не говорил, что id может быть только один?
зачем это onClick="document.forms[0].submit()" в кнопке submit? оно ведь ни на что не влияет
почему имя чекбоксов name=rkick одинаковое? это грозит конфликтами. поставьте, как и в другом варианте - массив name=rkick[]

опишите, пожалуйста, задачу, что требуется по смыслу, тогда можно будет переработать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)