2010-09-09 20 views
1

J'ai cette zone de texte qui affiche le texte entré, mais lorsque le nombre de lignes dépasse la taille et la largeur de la zone de texte, l'utilisateur doit faire défiler vers le bas pour voir ce qu'il a entré en dernier.Défilement automatique <textarea> avec Javascript

Je voudrais que la zone de texte soit réglée vers le bas chaque fois que vous appuyez sur le bouton Entrée.

J'ai essayé ce qui suit, mais je ne peux pas le faire fonctionner:

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

puis j'appeler la fonction keyDown dans <input onKeyDown="return keyDown(event, this);" ...>

Toute idée pourquoi pas workie?

+0

S'il vous plaît lire la case 'Comment formater' à côté du formulaire de question pour apprendre à formater correctement le code et le code en ligne. –

Répondre

4

les opérations suivantes:

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

Cela dépend de quel type d'entrée que vous regardez, mais obligez le curseur vers le bas pourrait être un problème d'utilisabilité grave. Si vous avez besoin d'une zone de texte qui se développe automatiquement, un regard sur les solutions existantes telles que ce jQuery plugin

Je ne suis pas sûr que ce soit ce que vous voulez, mais un coup d'oeil à ceci: http://jsfiddle.net/yV76p/

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

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

Salut Yi, la solution à laquelle vous avez lié ne montre pas l'expansion de textarea. Vous pouvez vérifier que le code est correct. –

+0

@HelenNeely A lire attentivement, la solution répond à la question de l'OP sur la manière de faire défiler la zone de texte vers le bas chaque fois que l'on appuie sur une touche. Il n'élargit pas automatiquement la zone de texte, car ce n'est pas ce que l'OP voulait, mais si vous voulez, vous pouvez regarder le lien vers le plugin jQuery –