Ich fülle einen Textbereich mit Inhalten, die der Benutzer bearbeiten kann.
Ist es möglich, es so zu dehnen, dass es mit CSS übereinstimmt (wie overflow:show
bei einem Div)?
Ich fülle einen Textbereich mit Inhalten, die der Benutzer bearbeiten kann.
Ist es möglich, es so zu dehnen, dass es mit CSS übereinstimmt (wie overflow:show
bei einem Div)?
Antworten:
Nicht wirklich. Dies geschieht normalerweise mit Javascript.
Hier gibt es eine gute Diskussion darüber, wie dies gemacht werden kann ...
nur eine Zeile
<textarea name="text" oninput='this.style.height = "";this.style.height = this.scrollHeight + "px"'></textarea>
this.scrollHeight + "px"
von this.scrollHeight + 3 + "px"
das Textfeld so groß wird, dass die Bildlaufleiste nicht angezeigt wird.
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 Operation hat nach einer Lösung gefragt, die kein Javascript verwendet. Dies sollte jedoch für viele Personen hilfreich sein, die auf diese Frage stoßen.
Dies ist eine sehr einfache Lösung, aber sie 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>
<style> textarea { resize: none; overflow: auto; } </style> <!--TEXT-AREA--> <textarea onkeyup="setHeight.call(this);">Hello World</textarea> <!--JAVASCRIPT--> <script type="text/javascript"> function setHeight(){ this.style.height = '1px'; this.style.height = this.scrollHeight + 'px'; } </script>
Grundsätzlich müssen Sie die Höhe zuerst auf 1px einstellen, aus diesem Grund: stackoverflow.com/questions/10722058/…
Eine weitere einfache Lösung für die dynamische Steuerung von Textbereichen.
<!--JAVASCRIPT-->
<script type="text/javascript">
$('textarea').on('input', function () {
this.style.height = "";
this.style.height = this.scrollHeight + "px";
});
</script>