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


Автор: ScreaM [13r] 15.2.2004, 10:21
Как сделать, чтобы при нажатии на кнопку вставлялся тег после курсора, а не в начале tewxtarea confused.gif
Такая фишка используется на форуме yabb и IPB (этом форуме).

Автор: Sardar 15.2.2004, 13:39
Обьект http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_selection.asp - работает только под ИЕ.

Под другими браузерами можно извратится и попробовать держать позицию курсора в переменной, по клику мыши считать смещение, но для этого нужно знать ширину шрифта + шрифт должен быть monospace. Ни разу не встречал реально работающего кода.

Автор: [xoodo] 16.2.2004, 20:47
document.forms[0].my_text.value += "<my_tag>some_crap</my_tag>";
Может, оно?

Автор: Sardar 16.2.2004, 22:26
Цитата
document.forms[0].my_text.value += "<my_tag>some_crap</my_tag>";
Может, оно?

Текст вставится не по курсору, а в конец текстового поля.
Под ИЕ selection это отселектированный участок страницы. Если фокус на текстовом поле, то селекция находится в месте моргающего курсора. У производного от селекции обьекта TextRange есть поле text, которое можно изменять, следовательно можно вставить текст под курсором. Вот такой прикол можно сделать:
Код

var sym="qwertyuiop[]asdfghjkl;'zxcvbnm,./";
function do_it(obj) {
if(document.selection&&document.selection.createRange) {
 var pointer=document.selection.createRange();
 if(pointer.parentElement()==obj) {
  pointer.text=sym.charAt(event.keyCode%sym.length);
  event.keyCode=0;
 }
}
}
...
<form>
<input type="text" id="test" onKeypress="do_it(this)">
<form>
//так можно сделать транслит русских букв на лету

Странная реализация, не ясно почему не сделали нормального интерфейса для текстовых полей.
Под Mozilla(Netscape),Opera и.т.д это не будет работать.
На http://msdn.microsoft.com/library/default.asp есть вся необходимая дока.

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