2010-09-09 134 views
1

我有这个显示输入文本的textarea,但是当行数超过textarea的大小和宽度时,用户必须向下滚动以查看他们最后输入的内容。使用Javascript自动滚动<textarea>

我希望textarea在每次按下输入按钮时都设置在底部。

我试过以下,但我不能得到它的工作:

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;  
} 

,然后我称之为<input onKeyDown="return keyDown(event, this);" ...>

功能的keyDown任何想法,为什么没有workie?

+0

请仔细阅读问题表单旁边的“如何格式化”框,以了解如何正确格式化代码和内嵌代码。 – 2010-09-09 21:36:07

回答

4

尝试以下操作:

textarea.scrollTop = textarea.scrollHeight - textarea.clientHeight; 
0

这取决于你在寻找什么样的投入,但迫使光标回到底部可能是一个严重的可用性问题。如果你需要一个文本,可自动扩展,看看像这样的现有解决方案jQuery plugin

我真的不知道,如果这是你想要什么,但看看这个:http://jsfiddle.net/yV76p/

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

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

嗨怡,您链接到的解决方案不显示textarea展开。您可能想要检查代码是否正确 – 2012-02-18 08:53:26

+0

@ HelenNeely仔细阅读,解决方案回答OP如何让textarea在按下按键时滚动到底部的问题。它不会自动扩展textarea,因为这不是OP想要的,但是如果你想要,你可以看看jQuery插件的链接 – 2012-02-18 09:31:00