WiMu: Zeilenumbruch in Textarea

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

  1. 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.

    1. 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

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bikers-lodge.com
      1. 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

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bikers-lodge.com
        1. 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

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          1. 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

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bikers-lodge.com
  2. 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

  3. 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

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. 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

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bikers-lodge.com
      1. 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.

        When a textarea is mutable, its raw value should be editable by the user: the user agent should allow the user to edit, insert, and remove text, and to insert and remove line breaks in the form of "LF" (U+000A) characters.

        MfG ChrisB

        --
        Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
        1. 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.

          When a textarea is mutable, its raw value should be editable by the user: the user agent should allow the user to edit, insert, and remove text, and to insert and remove line breaks in the form of "LF" (U+000A) characters.

          ...

          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

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bikers-lodge.com