CSS Textarea, die sich bei der Eingabe von Text ausdehnt
Ich habe eine Textarea, wo Benutzer können text. Standardmäßig hat eine Höhe von 17px. Jedoch, wenn Benutzer fügen eine Menge text, ich will den text Bereich entsprechend zu erweitern. Gibt es eine Möglichkeit dies mit CSS ? Vielen Dank im Voraus!!
InformationsquelleAutor der Frage Spencer | 2011-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nicht mit CSS allein. versuchen Sie die automatische Vergrößerung jquery-plugin.
https://github.com/jaz303/jquery-grab-bag/blob/master/javascripts/jquery.autogrow-textarea.js
Können Sie auch sehen, die automatische Vergrößerung demo hier http://onehackoranother.com/projects/jquery/jquery-grab-bag/autogrow-textarea.html
Es ist leicht und einfach zu bedienen. Hier ist, wie es gemacht wird. Definieren Sie Ihre textarea id. Zählen Sie die jquery js-Datei, bevor
</body>
. Dann zwischen den script-tags, geben Sie den jquery-Befehl$("#txtInput").autoGrow();
InformationsquelleAutor der Antwort Hussein
Diesem jQuery-plugin ist eine wirklich tolle:
http://www.jacklmoore.com/autosize
Habe ich getestet, ein paar von diesen, und diese ist mit Abstand die schönste. Gibt auch ein Beispiel mit einem CSS-übergang Effekt ist ziemlich glatt.
InformationsquelleAutor der Antwort sirkitree
Brauchen Sie nicht ein plugin für diese. Dies funktioniert auf Texteingabefelder an jede Größe, Höhe oder Zeile Größe und wird nur funktionieren, wenn der Inhalt übersteigt die textarea. Erstens legen Sie den überlauf auf Ihr Ziel Texteingabefelder zu versteckt und die Größe auf "keine", dann fügen Sie die folgenden Funktionen auf die Texteingabefelder, die Sie wollen, um die automatische Vergrößerung. Es wird nicht nur erhöhen Sie die textarea-Größe wie der Benutzer eingibt, es werden auch automatisch verkleinern, wenn Sie zu löschen Zeug.
Es funktioniert durch die Messung, wenn die scroll-Höhe der textarea ist größer als die äußere Höhe, die es nur werden, wenn es mehr text als das textarea-halten kann - und es dauert border Größe in Betracht für höhere Genauigkeit. Mit einfügen und Eingabe bedeutet, dass es nur zu erhöhen, wenn der Benutzer physisch, ändert sich der Wert der textarea, im Gegensatz zu, wenn Sie eine beliebige Taste drücken. Es ist kleinlich, aber ein textarea sollte nicht wachsen, wenn jemand drückt eine Taste oder so etwas.
Könnte es klug sein, fügen Sie eine Nicht-JS-Möglichkeit, die re-aktiviert, überlauf-und Größenanpassung für diejenigen, die nicht über Javascript, sonst werden Sie stecken mit einer winzigen box.
InformationsquelleAutor der Antwort Woody Payne
JavaScript für diese.
Dieses Skript überprüft die Länge von text-Bereich nach jedem Tastendruck gibt es (copypasta von hier):
InformationsquelleAutor der Antwort Nikita Barsukov
Erweiterung textarea, wie Sie geben
Typ etwas in textarea um den Effekt zu sehen
InformationsquelleAutor der Antwort Prem Kumar Maurya
Verwende ich die folgenden (mit jQuery):
Beachten Sie, dass es reagiert auf verschiedene Ereignisse, erhöht sich nur die Anzahl der Zeilen (D. H. nicht abnehmen), löst eine anfängliche ändern (z.B. um die Größe beim surfen wieder auf eine form mit vielen Linien)
InformationsquelleAutor der Antwort DigitalDan
Diese scheint zu sein, viel effizienter und Griffe max-Höhe
InformationsquelleAutor der Antwort Glenn Kreisel
Javascript Verwenden. textarea-Komponente verhält sich wie ein Textfeld, und Sie das ändern wollen (Sie wollen es sich zu Verhalten wie ein div-Element), so haben Sie zu hacken in das von Ihnen gewünschte Verhalten.
Hier ist eine Lösung, die ich irgendwo gefunden vor ein paar Monaten, aber nicht in der Lage, wieder zu finden. Es kann meinen eigenen Geschmack Hinzugefügt:
Markup:
Stile:
Holen Sie sich dieses Ereignis-listener auf die textarea ist
change
Veranstaltung:Wie funktioniert es? Im Grunde ein div, der die expansion ist das, was Sie wollen, dass die textarea die expansion zu Verhalten wie die. Also, du machst einen div mit der alle die gleichen Stile wie die textarea-Komponente und setzen Sie die textarea-Wert in den div. Dann bekommst du die div-Höhe und die textarea-Komponente die Höhe.
Mit display none und block, das div erscheint und verschwindet so Messen Sie seine Höhe. Du wirst nie sehen es eigentlich in den browser.
Hoffe, das funktioniert für Sie!
P. S. ich benutze Reagieren so musste ich meine Lösung für sein framework Agnostiker. So kann es Fehler oder einem syntax-Fehler. E. g. haben Sie vielleicht eine Abfrage des Dokuments finden Sie den Züchter div.
InformationsquelleAutor der Antwort A.Williams
Wenn Sie Angular2/4 es gibt eine große Richtlinie hierdass das funktioniert.
Finden Sie in der Themen-Liste für die beim laden von Daten dynamisch in die textarea für einen workaround. Andere als, dass Problem, es funktioniert gut mit ReactiveForms und Vorlage-Formulare.
Als Referenz, dies ist die Richtlinie code:
InformationsquelleAutor der Antwort rmcsharry
Alte Frage, aber Sie könnte so etwas tun:
html:
jquery:
Diese Weise die auto-resize für jede textarea die Klasse "text-Bereich". Auch schrumpft, wenn der text entfernt wird.
jsfiddle:
https://jsfiddle.net/rotaercz/46rhcqyn/
InformationsquelleAutor der Antwort rotaercz