Zeilenumbruch in Textarea
WiMu
- html
Hallo liebes Forum,
vorweg: habe schon die Suchfunktion und Google bemüht, aber nicht ganz das passende gefunden, obwohl das Problem wohl bekannt sein dürfte ...
Also ... ich lese aus einer Datenbank per ajax einen Text aus, den ich anschließend in eine Textarea stecke um ihn dort bearbeiten und anschließend wieder in der Datenbank speichern zu können (alles Windows - muss aber später auch auf Linux funktionieren). Der ursprüngliche Text aus der Datenbank kommt so bei mir an:
Zeile 1\r\n\r\nZeile 2\r\n\r\nZeile 3
Das (java-)script schmeißt aber die "\r"s raus und speichert den Text nach einer Bearbeitung so ab:
Zeile 1\n\nZeile 2\n\nZeile 3
Die "\r"s brauche ich aber später für RegExp-Gedöhnse. Habe es statt mit $('textarea').val() schon mit .html() und .text() probiert (jQuery) - das funktioniert aber natürlich gar nicht. Meine einzige Idee ist, vor dem zurücksenden an den server, die "\r"s per einfachem .replace() manuell wieder einzufügen. Aber irgendwie behagt mir das nicht. Könnte das auf dem Mac oder auf Linux-Rechnern zu Problemen führen? Z.B. zu doppelten Zeilenumbrüchen, o.Ä.? Habt ihr vielleicht eine bessere Idee?
Liebe Grüße,
WiMu
Habt ihr vielleicht eine bessere Idee?
Erst auf dem Server bearbeiten.
Der soll dann aus allen \n ohne \r wieder \r\n machen.
Da gibts weiter unten auch schon einen Beitrag zum Thema.
Hello,
Habt ihr vielleicht eine bessere Idee?
Erst auf dem Server bearbeiten.
Der soll dann aus allen \n ohne \r wieder \r\n machen.
Das sollte der Browser in einer Textarea schon ganz von alleine tun.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Hello,
Habt ihr vielleicht eine bessere Idee?
Erst auf dem Server bearbeiten.
Der soll dann aus allen \n ohne \r wieder \r\n machen.Das sollte der Browser in einer Textarea schon ganz von alleine tun.
Nur zur Ergänzung, was die Browser auch noch tun in den Textareas:
Bei einem Affenformular killen sie bei jedem Roundturn _einen_ führenden Zeilenumbruch.
_Nach_ einem darstellbaren Zeichen bleiben die Zeilenumbrüche allerdings erhalten.
Den Sinn habe ich noch nicht ganz erkannt.
Ich hatte erst PHP in Verdacht, aber die führenden Leerzeilen gehen tatsächlich erst bei der Anzeige im Browser verloren.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Bei einem Affenformular killen sie bei jedem Roundturn _einen_ führenden Zeilenumbruch.
Zitat aus http://www.w3.org/TR/html4/struct/text.html#h-9.1:
In order to avoid problems with SGML line break rules and inconsistencies among extant implementations, authors should not rely on user agents to render white space immediately after a start tag or immediately before an end tag.
cu,
Andreas
Hello Andreas,
Bei einem Affenformular killen sie bei jedem Roundturn _einen_ führenden Zeilenumbruch.
Zitat aus http://www.w3.org/TR/html4/struct/text.html#h-9.1:
In order to avoid problems with SGML line break rules and inconsistencies among extant implementations, authors should not rely on user agents to render white space immediately after a start tag or immediately before an end tag.
Das fällt also unter "works as designed" und nicht unter "This Bug is a Feature" ;-)
Danke für den Link.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
hi,
seit dem ich Seiten, wo textareas drin sind, generell mit Perl und
binmode STDOUT;
ausliefere, muss ich mich um solche Sachen gar nicht mehr kümmern. Unerheblich, ob diese textareas mit Ajax, oder sonstwie befüllt werden, dargestellt und übernommen werden die Zeilenumbrüche so, wie sie ursprünglich vorliegen.
Schönes Wochenende,
Horst
Hi,
Der ursprüngliche Text aus der Datenbank kommt so bei mir an:
Zeile 1\r\n\r\nZeile 2\r\n\r\nZeile 3
Dann bereinige diese Texte einmalig, so dass sie nur \n als Zeilenumbruchzeichen enthalten.
Mach das mit den bestehenden Werten – und mit zukünftig reinkommenden neuen, vor dem Abspeichern – falls irgendein Client doch mal \r\n senden sollte.
Die "\r"s brauche ich aber später für RegExp-Gedöhnse.
Brauchst du dann nicht mehr.
MfG ChrisB
Hello,
Dann bereinige diese Texte einmalig, so dass sie nur \n als Zeilenumbruchzeichen enthalten.
Mach das mit den bestehenden Werten – und mit zukünftig reinkommenden neuen, vor dem Abspeichern – falls irgendein Client doch mal "\r\n" senden sollte.
Wenn Du in eine Textarea eines gesunden Browsers "\n" oder "\r" reinstopfst, dann sollte nach dem Submit auf dem Server stattdessen wieder "\r\n" ankommen. Die Zeilenumbrüche werden also wieder ergänzt. Das gilt unabhängig von der Plattform, auf der der Browser läuft. Ich habe bisher noch keinen Browser in die Finger bekommen, der das anders macht.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hi,
Wenn Du in eine Textarea eines gesunden Browsers "\n" oder "\r" reinstopfst, dann sollte nach dem Submit auf dem Server stattdessen wieder "\r\n" ankommen. Die Zeilenumbrüche werden also wieder ergänzt.
MfG ChrisB
Hello,
Hi,
Wenn Du in eine Textarea eines gesunden Browsers "\n" oder "\r" reinstopfst, dann sollte nach dem Submit auf dem Server stattdessen wieder "\r\n" ankommen. Die Zeilenumbrüche werden also wieder ergänzt.
...
For historical reasons, the element's value is normalised in three different ways for three different purposes. The raw value is the value as it was originally set. It is not normalized. The API value is the value used in the value IDL attribute. It is normalized so that line breaks use "LF" (U+000A) characters. Finally, there is the form submission value. It is normalized so that line breaks use U+000D CARRIAGE RETURN "CRLF" (U+000A) character pairs, and in addition, if necessary given the element's wrap attribute, additional line breaks are inserted to wrap the text at the given width.
Du hast die Hälfte vergessen. Hier geht es um den Submission-Value!
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg