![]() |
Помогите с javascript
Здравствуйте. Вроде бы элементарно, а решить не могу. Как получить положение курсора(не мыши) в textarea. Конкретнее:
Есть textarea, есть кнопка. При нажатии на кнопку в textarea в то место, где там сейчас курсор, должно что-то вставляться. Повторяю, не в конец текста, а именно туда, где сейчас курсор. Заранее спасибо. |
т.е. просто плейс? такого помоему на JS не собрать, только на VBScript
|
Плохо, если так - надо на javascript. За ответ спасибо( отрицательный результат тоже результат :-) )
|
Вложений: 1
IE не хранит позицию курсора в TextArea. Если бы это было так, то в этом форуме можно было бы вставлять смайлы именно как ты хочешь, а не в конец текста (Я специально поднял кучу доков и проверил).
Можно было бы перехватывать нажатия клавиш (onkeypress), запоминать и заменять event.keyCode на что-нибудь непечатное (1, 2 ...), потом определять его позицию в TextArea и заменять _непечатное_ на введённое пользователем значение. Но... клавиши удаления и курсора наплевательски игнорируются :( Кроме того, после потери фокуса (что произошло бы при нажатии кнопки), TextArea не запоминает позицию курсора (пройдись Tab, Shift-Tab). Однако, можно же использовать пресловутый Drag & Drop, или выделение! С Drag & Drop не пробовал, но должно выглядеть неплохо -- подцепил иконку и снёс на TextArea. Выделение (selection) может быть проще, но оно глобально (document.selection) -- нужно осторожнее с ним, а то будешь редактировать HTML страницы на лету :smile: P.S. Ежели нужна кому реализация на Drag&Drop -- сигнальте, постараюсь разобраться. |
Спасибо за ответ, конечно, но мне уже подсказали-
http://netadmin.ws/forum/showthread....5168#post45168 |
дядьки - можно нижеследующее как_нить проще оформить?
<script language="JavaScript"> function tchk(aa) { var Arr1=new Array; Arr1=document.c.id; for (i=0;i<Arr1.length;i++) { if (document.c.id[i] != aa) { document.c.id[i].checked=false; }; }; }; </script> |
Вложений: 1
astanoid
Зачем же список всех элементов забивать в новый массив? IE сам может отфильтровать что нужно (c -- так форма называется, я не проверял): function tchk(aa) { var list = document.c.all[aa]; //взять из контейнера c все тэги с ID=aa var i; for (i = 0; i < list.length; i++) list[i].checked = ! list[i].checked; } Ниже клею пример где по кнопке происходит инверсия в 16-ти CheckBox-ах + маленький отладочный showProp()... |
| Часовой пояс GMT +4, время: 18:17. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.