class DarkRaha extends com { // разработка приложений
            String a="Главная" b="Контакты" c="О сайте"
};

HTML

DOM HTML

введение
объектной модель DHTML
события
свойства и методы
объект window
объект navigator
объект screen
объект history
объект location
объект document
объект event
объект Canvas

разное

генерация кода
фреймы
вставка текста в позицию каретки
скрыть/показать текст
ширина ячеек таблицы

Справочник по DHTML

Вставка текста в позицию каретки

Стандарт пока не определил никаких средств для определения текущей позиции каретки в текстовых элементах управления. Поэтому для решения задачи обычно используют параметры текущего выделенного текста. Так в браузерах на базе движка Gecko (например, Mozilla) добавлены свойства selectionStart и selectionEnd. В IE можно воспользоваться дополнительным свойством объекта document - selection, определяющий текущий выделенный текст на странице. В обоих случаях отсутствие выделенного текста означает вставку в позицию каретки.

Ниже приведен пример скриптовой функции, вставляющей текст txt в текущую позицию каретки элемента управления obj (например, textarea).


function insAtCaret(obj, txt) {
obj.focus();

if (document.selection) { // IE
   var s = document.selection.createRange(); 
   s.text=txt;
   s.select();
}
else // Mozilla
if (obj.selectionStart) { // Mozilla
   var s = obj.selectionStart,
       e = obj.selectionEnd;
   obj.value = obj.value.substring(0, s)
      + txt + obj.value.substr(e);
   obj.selectionStart=s+1;
   obj.selectionEnd=s+1;
} 
else { // в остальных случаях просто добавляем в конец
   obj.value += txt;
}
}

Единственный минус этого метода это проблемы в IE при вставке текста в несколько текстовых полей, т.к. selection один на всех.

Здесь можно почитать о методе с использованием не документированных возможностей IE и ссылку на решение проблемы от Microsoft. Правда приведенные там скрипты работают только для input. Для textarea нужно отнимать не 2, а другое число. А если есть еще и второй textarea, то у второго изначальное число больше (кажется на 2), а потом меняется на длину текста первого.

Также можно встретить предложения, добавить свойство текущей позиции каретки самому и изменять по всем событиям происходящим в контроле.


Рейтинг@Mail.ru