Textarea - Größe dynamisch ändern
Daniel_Petratsch
- javascript
Guten Abend!
Ich habe eine womöglich etwas schwierigere Frage:
Ich schreibe gerade einen kleinen WYSIWYG Texteditor, der per Browser zu Bedienen ist. Dazu habe ich Textfelder, die bei Bedarf mittels DOM in den HTML Baum eingefügt werden. Nun hätte ich aber gerne, dass sich die Textarea während dem Schreiben dynamisch der Höhe anpasst, die Breite soll fix bleiben - ungefähr so wie in Word wenn man etwas in eine Tabellenzelle schreibt.
Ist dies mittels Javascript überhaupt möglich? Meine Idee wäre diese, die Eingabe während des Schreibens mittels eines JS-Events auf die Enter Taste abzufragen und daraufhin das row Attribut um eins zu erhöhen. Beim Löschen müsste ich dementsprechend dann den Text auf \n Zeichen durchsuchen und wiederum das row Attribut anpassen.
Ob dies eine gute Möglichkeit ist kann ich nicht sagen, aber es ist mir die im Moment einzige, die mir einfällt.
Hat jemand schon mal dieses Problem gehabt und kann mir dabei etwas weiterhelfen? Wäre sehr dankbar darüber.
freundliche Grüße,
Daniel Petratsch
Hallo Daniel,
Ich finde die Idee ganz lustig (sinnvoll ist wieder 'ne andere Geschichte) und hab's mal getestet. Das ist natuerlich voellig unausgegoren, aber vielleicht ein brauchbarer Ansatz.
<script type="text/javascript">
function adjust(sender)
{
// zeilenumbrueche harmonisieren
var text = sender.value.replace(/(\015\012)|(\015)|(\012)/g, '\n');
// text in array verwandeln
var text_arr = text.split('\n');
//zeilen zaehlen
sender.rows = text_arr.length;
}
</script>
.....
<textarea rows="5" cols="10" onKeyDown="adjust(this)"></textarea>
Gruß,
Dieter
Hallo Dieter!
Ich finde die Idee ganz lustig (sinnvoll ist wieder 'ne andere Geschichte) und hab's mal getestet. Das ist natuerlich voellig unausgegoren, aber vielleicht ein brauchbarer Ansatz.
Danke für Deine Antwort, das funktioniert prima, ein paar kleine Änderungen noch und dann ist es perfekt.
Bezüglich sinnvoll: Ist es eigentlich ja auch nicht, ich möchte nur in meinem Fall dem Benutzer immer den gesamten Text sehen lassen, denn dieser Text soll im Endeffekt 1:1 als Textdokument ausgedruckt werden, es ist somit die Länge bzw Höhe des Textes wie er auf dem Papier erscheinen soll gleich ersichtlich.
Danke nochmals,
freundliche Grüße,
Daniel Petratsch