Как добавить текст в поле ввода или textarea на место курсора?

Вопрос

Как jQuery добавить текст в текстовое поле (input type text) или текстовую область (textarea) на место курсора? То есть вставить этот текст, при этом не заменив тот, который там уже есть. Спасибо!


Ответ №1

Можете воспользоваться следующей функцией:

jQuery.fn.extend({
    insertAtCaret: function(myValue){
        return this.each(function(i) {
            if (document.selection) {
                // Для браузеров типа Internet Explorer
                this.focus();
                var sel = document.selection.createRange();
                sel.text = myValue;
                this.focus();
            }
            else if (this.selectionStart || this.selectionStart == '0') {
                // Для браузеров типа Firefox и других Webkit-ов
                var startPos = this.selectionStart;
                var endPos = this.selectionEnd;
                var scrollTop = this.scrollTop;
                this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
                this.focus();
                this.selectionStart = startPos + myValue.length;
                this.selectionEnd = startPos + myValue.length;
                this.scrollTop = scrollTop;
            } else {
                this.value += myValue;
                this.focus();
            }
        })
    }
});

Поддерживаются обычные поля ввода и textarea. Правда, эта функция работает с DOM напрямую, а расширяет jQuery только для удобства использования. (При необходимости можно переписать как отдельную функцию для чистого JavaScript).

Использовать так:

$('#thetext,#thearea').insertAtCaret("Текст для вставки");

Пример



5 комментария

  • qwerty:

    И??? В ИЕ не работает же

  • Игорь:

    А как просто вставить текст из поля базы данных, точнее из переменной, без определения позиции курсора?

  • qpavelst:

    Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    достаточно просто зарегистрироваться на нашем сервисе. > like.zarplatt.ru <

  • spavelst:

    Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

    Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

    Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

    достаточно просто зарегистрироваться на нашем сервисе. > http://www.like.zarplatt.ru <

  • foummajat:

    Раздаем по 50$ просто так.
    Выберите счет, инвестируйте полученные 50$ и
    наблюдайте за тем, как растут уже ваши деньги.
    Получите 50 USD здесь http://rancat.xyz/track/BDP50

Добавить комментарий для qpavelst Отменить ответ


(обязательно)