n'abend,
Ohne mir anzuschauen, was du da gebaut hast, wollte ich fragen, ob du dir bewusst bist, dass es schon ein entsprechendes jQuery-Plugin gibt:
http://plugins.jquery.com/project/autogrow
das war mir nicht bewusst. Ich hatte allerdings auch nicht nach einer fertigen Lösung gesucht. Obwohl ich jQuery sehr zu schätzen und lieben gelernt habe, sind mir 99.99% der Plugins suspekt. Ich schaue mir - wenn ich gerade mal nichts zu tun habe - öfter mal neue Plugins an. Meist jedoch weniger um sie zu nutzen, mehr um eigene Ideen anzureichern. jQuery: ja, Fremd-Plugins: (mit Ausnahmen) eher nicht so.
Ich weiß (noch) nicht, wie gut das umgesetzt ist, ob deines nun besser ist, aber es lohnt sich sicher, einen Blick darauf zu werfen.
=== Ähnlichkeiten: ===
* Sowohl autoHeight() als auch autogrow() kopieren den Inhalt der <textarea> in ein zweites (verstecktes) Element, von welchem dann die (computedStyle) Höhe ausgelesen werden können.
=== Unterschiede: ===
* Während mein Ansatz durch (keyup-)Events ausgelöst wird, setzt autogrow() auf einen Intervall.
* autoHeight() kann neben minimaler und maximaler Höhe auch noch die Anzahl freier Zeilen am Ende als Parameter entgegen nehmen.
* autogrow() beachtet padding, autoHeight() nicht.
* autogrow() berücksichtigt overflow-x und overflow-y (um das Aufflackern der Scrollbar zu verhindern)
* autogrow() escaped HTML-Steuerzeichen
* autogrow() ignoriert eine ganze Reihe von font-relevanten Styles
* autogrow() arbeitet mit jQuery.animate()
* autogrow() nutzt die Styles min-height und max-height, statt diese als Parameter zu übergeben
=== Schlussfolgerungen ===
* <br> vs. <BR> (IE workaround) [bug]
* <,& und > durch Entitäten ersetzen (ich depp™) [bug]
* overflow-x/y entsprechend setzen [optimierung]
* nochmal mit jQuery.animate() experimentieren [optimierung]
* prüfen welche Auswirkungen das Ignorieren von padding mit sich bringt [possible bug]
* Intervall gegenüber keyup-Event prüfen [optimierung]
* min/max Höhe möglicherweise ebenfalls mittels CSS, statt JS spezifizieren [optimierung]
weiterhin schönen abend...
#selfhtml hat ein Forum?
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|