Wie kann ich ein Textfeld mit jQuery automatisch erweitern lassen?
Ich habe ein Textfeld zur Erläuterung der Tagesordnung des Meetings. Daher möchte ich dieses Textfeld erweitern, wenn der Text meiner Tagesordnung diesen Textfeldbereich weiter vergrößert.
Antworten:
Ich habe viele ausprobiert und dieser ist großartig.Link ist tot. Neuere Version finden Sie hier . Siehe unten für die alte Version.Sie können es versuchen, indem Sie die Eingabetaste im Textbereich gedrückt halten. Vergleichen Sie den Effekt mit dem anderen Plugin für automatisch expandierende Textbereiche ....
bearbeiten basierend auf Kommentar
Hinweis: Sie sollten die benötigten JS-Dateien einschließen ...
Um die Bildlaufleiste in das Textfeld von Blinken auf zu verhindern und Ausschalten während der Expansion / Kontraktion, können Sie das Set
overflow
zuhidden
auch:Aktualisieren:
Der obige Link ist defekt. Sie können die Javascript-Dateien jedoch weiterhin hier herunterladen .
quelle
Wenn Sie kein Plugin möchten, gibt es eine sehr einfache Lösung
Sehen Sie, wie es in einer jsFiddle funktioniert. Ich habe hier eine andere Textbereichsfrage beantwortet .
Um die Frage zu beantworten, ob Sie es in umgekehrter Reihenfolge tun oder verkleinern möchten, wenn Text entfernt wird: jsFiddle
@ Jason hat hier einen entworfen
quelle
if (this.clientHeight < this.scrollHeight) { this.style.height = this.scrollHeight + 'px'; }
Wächst / schrumpft im Textbereich. Diese Demo verwendet jQuery für die Ereignisbindung, ist jedoch in keiner Weise ein Muss.
( Keine IE - Unterstützung - IE reagiert nicht auf die Zeilen Attributänderung )
DEMO-SEITE
HTML
CSS
Javascript (aktualisiert)
quelle
quelle
Sie können diesen versuchen
quelle
Dank SpYk3HH habe ich mit seiner Lösung begonnen und daraus diese Lösung gemacht, die die Schrumpfungsfunktionalität hinzufügt und vermutlich noch einfacher und schneller ist.
Getestet im aktuellen Chrome-, Firefox- und Android 2.3.3-Browser.
In einigen Browsern werden möglicherweise die Bildlaufleisten blinken. Fügen Sie dieses CSS hinzu, um das zu lösen.
quelle
1px
scheint besser zu sein)Um einen automatisch erweiterbaren Textbereich zu definieren, müssen Sie zwei Dinge tun:
Hier ist eine handgemachte Funktion , um die Aufgabe zu erfüllen.
Funktioniert gut mit fast allen Browsern (<IE7) . Hier ist die Methode:
HIER ist ein Beitrag dazu.
quelle
Ich habe das Textarea Expander jQuery-Plugin bereits mit guten Ergebnissen verwendet.
quelle
Jeder sollte dieses jQuery-Plugin ausprobieren : xautoresize-jquery . Es ist wirklich gut und sollte Ihr Problem lösen.
quelle
(Dies funktioniert in Internet Explorer 9 oder älter nicht, da das
input
Ereignis verwendet wird.)quelle
Ich habe gerade diese Funktion erstellt, um Textbereiche beim Laden von Seiten zu erweitern. Wechseln Sie einfach
each
zukeyup
und es wird auftreten, wenn der Textbereich eingegeben wird.Getestet in Chrome, IE9 und Firefox. Leider hat Firefox diesen Fehler, der den falschen Wert für zurückgibt
scrollHeight
, so dass der obige Code eine (hackige) Problemumgehung dafür enthält.quelle
Ich habe einige Fehler in der Antwort von Reigel behoben (die akzeptierte Antwort):
Es gibt einige verbleibende Probleme in Bezug auf Räume. Ich sehe keine Lösung für doppelte Leerzeichen, sie werden als einzelne Leerzeichen im Schatten angezeigt (HTML-Rendering). Dies kann nicht mit & nbsp; behoben werden, da die Leerzeichen unterbrochen werden sollten. Außerdem bricht der Textbereich eine Linie nach einem Leerzeichen. Wenn für dieses Leerzeichen kein Platz vorhanden ist, wird die Linie an einem früheren Punkt unterbrochen. Vorschläge sind willkommen.
Korrigierter Code:
quelle
Code von SpYk3HH mit Zusatz zum Schrumpfen der Größe.
quelle
Das hat bei mir besser funktioniert:
quelle
Die Leute scheinen sehr überarbeitete Lösungen zu haben ...
So mache ich es:
Dies funktioniert sowohl mit langen Zeilen als auch mit Zeilenumbrüchen. Wächst und schrumpft.
quelle
Ich habe diese Abfragefunktion geschrieben, die zu funktionieren scheint.
Sie müssen jedoch die Mindesthöhe in CSS angeben. Wenn Sie keine Codierung vornehmen möchten, muss diese zweistellig sein. dh 12px;
quelle
Wenn Sie das von Reigel veröffentlichte Plugin verwenden, beachten Sie bitte, dass dadurch die Funktion zum Rückgängigmachen in Internet Explorer deaktiviert wird (probieren Sie die Demo aus).
Wenn dies ein Problem für Dich ist , dann würde ich vorschlagen , die Verwendung von Plug - gepostet @richsage statt, da es nicht von diesem Problem leidet. Weitere Informationen finden Sie im zweiten Aufzählungspunkt unter Suchen nach dem Textbereich für die ultimative Größenänderung .
quelle
Es gibt auch das sehr coole
bgrins/ExpandingTextareas (github)
Projekt, das auf einer Veröffentlichung von Neill Jenkins mit dem Titel Expanding Text Areas Made Elegant basiertquelle
Ich wollte Animationen und automatische Verkleinerung. Die Kombination ist anscheinend schwierig, weil die Leute ziemlich intensive Lösungen dafür gefunden haben. Ich habe es auch multitextbereichssicher gemacht. Und es ist nicht so lächerlich schwer wie das jQuery-Plugin.
Ich habe mich basierend auf Vsync Antwort (und die Verbesserung er es wieder gut gemacht), http://codepen.io/anon/pen/vlIwj die codepen für meine Verbesserung.
HTML
CSS
JS
quelle
Es gibt viele Antworten darauf, aber ich fand etwas sehr Einfaches, füge dem Textbereich ein Keyup-Ereignis hinzu und überprüfe, ob die Taste gedrückt wird. Der Tastencode lautet 13
keyPressHandler(e){
if(e.keyCode == 13){
e.target.rows = e.target.rows + 1;
}
}
Dadurch wird Ihrem Textbereich eine weitere Zeile hinzugefügt, und Sie können die Breite mithilfe von CSS formatieren.
quelle
Angenommen, Sie versuchen dies mit Knockout zu erreichen. So geht's:
Auf Seite:
Im Ansichtsmodell:
Dies sollte auch dann funktionieren, wenn Sie wie ich mehrere Textbereiche von einem Knockout foreach erstellt haben.
quelle
Einfache Lösung:
HTML:
JS:
https://fiddle.jshell.net/7wsnwbzg/
quelle
Die einfachste Lösung:
html:
CSS:
js (jquery):
quelle
Lösung mit reinem JS
https://jsfiddle.net/Samb102/cjqa2kf4/54/
quelle
Dies ist die Lösung, die ich letztendlich verwendet habe. Ich wollte eine Inline-Lösung, und dies scheint bisher großartig zu funktionieren:
quelle
https://codepen.io/nanachi1/pen/rNNKrzQ
das sollte funktionieren.
quelle
@Georgiy Ivankin machte einen Vorschlag in einem Kommentar, ich habe ihn erfolgreich verwendet :) -, aber mit geringfügigen Änderungen:
Es hört auf zu expandieren, sobald es die maximale Höhe von 200px erreicht hat
quelle
Alte Frage, aber Sie könnten so etwas tun:
html:
jquery:
Auf diese Weise gilt die automatische Größenänderung für alle Textbereiche mit der Klasse "Textbereich". Schrumpft auch, wenn Text entfernt wird.
jsfiddle:
https://jsfiddle.net/rotaercz/46rhcqyn/
quelle
Versuche dies:
quelle
Einfache jQuery-Lösung:
HTML:
Überlauf sollte ausgeblendet werden . Die Größenänderung ist keine, wenn Sie die Größe nicht mit der Maus ändern möchten.
quelle