Автопрокрутка <textarea>с Javascript - PullRequest
1 голос
/ 10 сентября 2010

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

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

Я попробовал следующее, но не могу заставить его работать:

function inputKeyDown(evt, input) {    
    if (evt.keyCode == 13) {    
        var textarea = document.getElementById("textarea");  
        textarea.value += "\n" + ">" + " " + input.value;  
        input.value = "";  
        return false;       
    }  
    var elem = document.getElementById('textarea');  
    elem.scrollTop = elem.scrollHeight;    
} 

и затем я вызываю функцию keyDown в <input onKeyDown="return keyDown(event, this);" ...>

Есть идеи, почему нет рабочего?

Ответы [ 2 ]

4 голосов
/ 10 сентября 2010

Попробуйте следующее:

textarea.scrollTop = textarea.scrollHeight - textarea.clientHeight;
0 голосов
/ 10 сентября 2010

Это зависит от того, какой тип ввода вы просматриваете, но принудительное перемещение курсора вниз может потенциально стать серьезной проблемой юзабилити. Если вам нужна текстовая область, которая автоматически расширяется, взгляните на существующие решения, такие как этот плагин jQuery

Я не совсем уверен, если это то, что вы хотите, но посмотрите это: http://jsfiddle.net/yV76p/

var textarea = document.getElementById("textarea");

textarea.onkeyup = function(evt) {
    this.scrollTop = this.scrollHeight;
}
...