Moin!
Ich möchte den Inhalt eines Textareas "1 zu 1" in ein Div bekommen.
Der Text in einem Texarea kann ja zweimal "umgebrochen" sein. Einmal, weil der Benutzer die Enter-Taste gedrückt hat, und dann durch den automatischen Umbruch am Ende der Zeile.
Erstes bekomme ich, in dem ich alle \n (Zeilenvorschubzeichen) per replace(/\n/,"<br>" in einer Schleife gegen <br> tausche. (ich hätte ja eher \r vermutet, und was andere Systeme als Windows da haben will ich jetzt erst mal nicht so genau wissen ;-))
Es gibt keine verläßlich wirkende Methode, alle Browser dazu zu veranlassen, die automatischen Zeilenumbrüche in einer Textarea als harte Newline-Zeichen zu senden. Das wrap-Attribut ist eben nicht im HTML-Standard enthalten (http://www.w3.org/TR/html401/interact/forms.html#h-17.7).
Also kriegst du niemals die Information, wo der Browser noch umbricht. Und ich finde das durchaus gut so, weil es meiner Erwartung entspricht: Wenn ich einen harten Zeilenumbruch in die Textarea eingebe, dann soll das Ergebnis ein echter Zeilenumbruch vom Typ <br> sein - wenn ich nichts eingebe, soll das Ergebnis ein automatischer Zeilenumbruch sein.
Außerdem kannst du gar nicht hinreichend genau beeinflussen, wie groß die Textarea nun wirklich angezeigt wird und wieviele Zeichen dort in eine Zeile gehen. Selbst wenn mit CSS ja eine sehr weitgehende Formatierung möglich ist: 1. kann der Besucher durch ein User-Stylesheet diese Vorgaben (insbesondere die Schriftgröße und vielleicht auch die Schriftart) abändern, und zweitens haben manche Browser beim Start eine deaktivierte Scrolleiste, andere hingegen eine unsichtbare, die erst eingeblendet wird (und Platz wegnimmt), wenn der Text über den Textareaplatz hinausgeht.
Mit anderen Worten: Mach dein DIV so breit, dass erfahrungsgemäß ungefähr die Breite der Textarea eine Zeile ausfüllt und es grob "so ähnlich" aussieht. Und pack dann eine "nl2br"-Funktion rein, die die eingegebenen Zeilenumbrüche (und ggf. auch die vom Browser eingefügten) in <br> umwandelt. Mehr kannst du nicht tun.
- Sven Rautenberg
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)