Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Смещение текста в текстовом поле после изменения (https://javascript.ru/forum/misc/14139-smeshhenie-teksta-v-tekstovom-pole-posle-izmeneniya.html)

sergiyko 02.01.2011 02:20

Смещение текста в текстовом поле после изменения
 
Добрый день
Есть проблемы с текстовым полем. Есть текстовое поле
<input id="mytext" name="mytext" type="text" value="" style="width: 150px;">

Поле имеет ширину 150 пикселей и если вводить текст с клавиатуры - все нормально, после достижения текстом конца выделенной ширины текст смещается, курсор стоит в конце и видно что вводишь. А вот если мне нужно что-то динамически добавить в поле
document.getElementById('mytext').value += 'abcd';

то положение текста в поле как бы сбивается. Как будто курсор передвинули в самое начало. То, что вводилось последним не видно (потому что текст длинный и в 150 пикселей не помещается). Приходится двигать курсор в самый конец вручную.
Я подумал, что после динамического добавления содержимого в поле перемещать курсор в конец с помощью javascript. Я нашел код для перемещения курсора, но он себя ведет не так как надо мне.
function setCaretPosition(el, pos)
{
    if (el.createTextRange)
    {
        // IE
        var range = el.createTextRange();
        range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
        el.focus();
    }
    else if (el.selectionEnd)
    {
        // Gecko
        el.selectionEnd = pos;
        el.selectionStart = pos;
        el.focus();
    }
}
setCaretPosition(
document.getElementById('mytext'),
document.getElementById('mytext').length
);

В IE8, хроме он работает верно, курсор передвигается в конец вместе с текстом и его видно. А вот в Firefox курсор стает в нужное положение, но сам текст не смещается к курсору и курсор не видно. Только после того как начать вводить с клавиатуры текст смещается к положению каретки. В опере вообще пока вручную курсор не установить в поле ввода, курсор вообще никуда не передвинется.
Мне как-то нужно сделать, чтобы в поле ввода текст не смещался к началу после динамического добавления содержимого в него. А как сделать это я не пойму. Может кто-то подскажет?


Часовой пояс GMT +3, время: 09:19.