А зачем пошли вообще на сложности с s.text!='' ? Берите это. Но тут ещё много недостатков - в Мозилле выделение попадает в начало тега, а надо или в конец, или так, как я сделал в IE (разница в положении курсора между случаем, прежде выделенным, и невыделенным). При отсутствии курсора в поле его нужно ставить в конец, а он попадает в начало.
Код | <TEXTAREA NAME="Description" cols="110" rows="20" id="tex">[% TaskText %]</TEXTAREA> <table border=0 cellpadding=3 cellspacing=3> <tr> <td align=center><input type="button" name="addcodeb" value=" Ж " style="font-weight: bold; width: 30px" onClick="copyTC('b','tex',2)" title="Жирный шрифт"> <td align=center><input type="button" name="addcodei" value=" К " style="font-style: italic; width: 30px" onClick="copyTC('i','tex',2)" title="Курсив"> <td align=center><input type="button" name="addcodeu" value=" П " style="text-decoration: underline; width: 30px" onClick="copyTC('u','tex',2)" tite="Подчеркивание"> <tr bgcolor="#F0F0F0"> <td align=center><input type="button" name="addcode1" value=" +1 " style="width: 40px" onClick="copyTC('+1','tex',1)" title="Увеличение размера шрифта на 1"> <td align=center><input type="button" name="addcode2" value=" +2 " style="width: 40px" onClick="copyTC('+2','tex',1)" title="Увеличение размера шрифта на 2"> <td> </tr> <tr> <td colspan="3" align=center> </tr> </table>
<script>function copyTC(cl,obj,varr,obj2) { if (varr==0) { teg1 = '[COLOR='+cl+']'; teg2 = '[/COLOR]'; document.getElementById(obj2).value = '#444444'; } else if (varr==1) { teg1 = '[SIZE='+cl+']'; teg2 = '[/SIZE]'; } else if (varr==2) { teg1 = '<'+cl+'>'; teg2 = '</'+cl+'>'; } document.getElementById(obj).focus(); if (document.selection) // --------------------------> этот кусок для IE { var s = document.selection.createRange(); var s1=s.text?0:-teg2.length; s.text=teg1+s.text+teg2; s.move('character',s1); s.select(); } else if (typeof(document.getElementById(obj).selectionStart) != 'undefined') { var start = document.getElementById(obj).selectionStart; var end = document.getElementById(obj).selectionEnd; text1 = document.getElementById(obj).value.substring(0,start); text = document.getElementById(obj).value.substring(start,end); text2 = document.getElementById(obj).value.substring(end); document.getElementById(obj).value=text1+teg1+text+teg2+text2; document.getElementById(obj).setSelectionRange(start,start); } else { document.getElementById(obj).value=document.getElementById(obj).value+teg1+teg2; } //document.getElementById(obj).focus(); } </script> |
Добавлено @ 12:34 Да, в Опере оно начинает работать с 8.01, что я отладить сейчас не могу. |