2010-05-10 5 views

Antwort

2

Dies ist eine sehr einfache Lösung, aber es funktioniert für mich:

<!--TEXT-AREA--> 
 
<textarea id="textBox1" name="content" TextMode="MultiLine" onkeyup="setHeight('textBox1');" onkeydown="setHeight('textBox1');">Hello World</textarea> 
 

 
<!--JAVASCRIPT--> 
 
<script type="text/javascript"> 
 
function setHeight(fieldId){ 
 
    document.getElementById(fieldId).style.height = document.getElementById(fieldId).scrollHeight+'px'; 
 
} 
 
setHeight('textBox1'); 
 
</script>

+2

Die Höhe der Box erhöht sich mit * jedem * Schlüsselstrich, nicht nur neue Zeilen. Selbst Rückschritt und Löschen verursachen die Höhe zu erhöhen. Fix, und Sie erhalten die Upvote zurück. – Birrel

+0

einige Browser wie IE don ' . t berechnen Scrollheight ganz richtig, was diese Art von Problemen führen kann nie so gut für mich in Chrome passiert, dass in den Sinn ... – KthProg

+1

hier ist die Lösung (edit Warteschlange ist voll): ' 'im Grunde müssen Sie zuerst die Höhe auf 1px, wegen dieser: http://stackoverflow.com/questions/10722058/height-of-textarea-increases-with-value-creased-but-does- setzen nicht-Reduzieren-wenn-Wert – KthProg

5

Hier ist eine Funktion, die mit jQuery funktioniert (nur für die Höhe, nicht für die Breite):

function setHeight(jq_in){ 
    jq_in.each(function(index, elem){ 
     // This line will work with pure Javascript (taken from NicB's answer): 
     elem.style.height = elem.scrollHeight+'px'; 
    }); 
} 
setHeight($('<put selector here>')); 

Hinweis: Die op nach einer Lösung gefragt, die Javascript nicht verwenden, dies sollte jedoch für viele Menschen hilfreich sein, die über diese Frage kommen.

3

nur eine Zeile

<textarea name="text" oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea> 
+0

Wie hat das nur zwei Stimmen. Das ist unglaublich Martin. Ich versuche nur 30 Minuten zu versuchen, das zu lösen. Gute Arbeit. –

Verwandte Themen