IE6, до первого притрагивания с onmouseover проблема - строка 60, симв 13 - null или не объект, FF1.06 - то же самое.
Добавлено: однако, везде работает, несмотря на ошибки, и с клавишами тоже.
Пример вдохновил (нет, сподвиг) на написание поддержки клавиш тоже в своём примере, хотя надобности в этом исчезающе мало.
Код переключателя радиокнопок:| Код | <form action=# name=f2 id=fid2> <input type=radio id=s1 name='radio_1' value='1'>1 <input type=radio id=s2 name='radio_1' value='2'>2 <input type=radio id=s3 name='radio_1' value='3'>3<br> <input type=radio id=s4 name='radio_2' value='4'>4 <input type=radio id=s5 name='radio_2' value='5'>5 <input type=radio id=s6 name='radio_2' value='6'>6<br> <input type=radio id=s7 name='radio_3' value='7'>7 <input type=radio id=s8 name='radio_3' value='8'>8 <input type=radio id=s9 name='radio_3' value='9'>9<br> <input type=radio id=s10 name='radio_4' value='10'>10 Сумма: <input name=i1 size=6 value=0 onfocus=this.form.elements[0].focus()> </form> <script> d=document;g=function(a){return d.getElementById(a);} fn=function(ev){t=d.all?event.srcElement:ev.target;if(d.all)ev=event; if(t.tagName!='INPUT'||t.type!='radio')return; if(ev.type==(d.all?'keydown':'keypress')&&ev.keyCode!=32)return; t.setAttribute('clicked',t.checked=t.getAttribute('clicked')!=null? 1-t.getAttribute('clicked'):1); l=document.getElementsByTagName('INPUT').length; s=0; for(i=0;i<l;i++){o=null; s+=Number((o=document.getElementsByTagName('INPUT')[i]).id.charAt(0)=='s' &&o.checked?o.value:0); if(o&&t.id!=o.id&&o.id.charAt(0)=='s') {o.setAttribute('clicked',o.checked?1:0);} }t.form.i1.value=s; if(ev.keyCode==32){if(d.all)ev.returnValue=!1;else ev.stopPropagation();} } g('fid2').onclick=fn; if(d.all&&!self.opera)g('fid2').onkeydown=fn;g('fid2').onkeypress=fn; </script><b>Кнопочное управление</b>:<br> Tab - Shift-Tab - между группами кнопок(IE)/кнопками(FF,Opera);<br> <- - -> - между кнопками в группе(IE,Opera);<br> пробел - вкл/выкл. кнопки .<br> |
Здесь, в отличие от http://forum.vingrad.ru/index.php?showtopic=92535&view=findpost&p=707881 для радиокнопок, признак "класса" есть первая буква "s" в id радиокнопки (вариант для того, чтобы меньше писать кода в тегах).
Демонстрация здесь: http://js2.ru/example/JsPrimeryCode-78.htm?xmp=078_4
Пример поучителен для демонстрации разнобоя в интерфейсах браузеров для кнопочного управления выделением кнопок. Самое оригинальное управление в Опере, когда таб одновременно перебирает и включает кнопки с перебором комбинаций. Одна вотчина разнобоев, это, как известно, размеры объектов и окон, а здесь оказалась тоже полянка непаханная. |