Manuela: Textarea

Hallo,

ich hab folgenden Code für ein mehrzeiliges Textfeld:

<textarea  name="Remarks:" value=" " rows=3 cols=40 wrap="physical" tabindex=7></textarea

nun sollt doch beim absenden des Formulars Zeilenumbrüche drin sein als \n, da sind aber keiene drin und somit wird es auf der Darstellenden Seite sehr unschön. Kann mir jemand sagen was ich machen muss, das da Zeilenumbrüche mit gesendet werden ??

THX Manuela

  1. Hoi Manuela

    Wie überprüfst Du (und kommst zum Schluss) dass keine \n übermittelt werden?

    cheers
    kaepten

    1. Hoi Manuela

      Wie überprüfst Du (und kommst zum Schluss) dass keine \n übermittelt werden?

      Indem ich mir das übergebene beim Aufruf der Seite in einem Dialogfled( mit alert... ) anzeigen lasse.

      cheers
      kaepten

      1. Hoi Manuela

        Indem ich mir das übergebene beim Aufruf der Seite in einem Dialogfled( mit alert... ) anzeigen lasse.

        Die Zeilenumbrüche sind da. Sie sind nur anders codiert. Mit alert benötigst Du das besagte \n . Die Zeilenumbrüche werden vom Formularfeld als %0D%0A codiert. Das heisst also, dass Du zuerst den Text nach %0D %0A durchsuchen und durch \n ersetzen musst!

        HTH
        kaepten

        1. Hoi Manuela

          Indem ich mir das übergebene beim Aufruf der Seite in einem Dialogfled( mit alert... ) anzeigen lasse.

          Die Zeilenumbrüche sind da. Sie sind nur anders codiert. Mit alert benötigst Du das besagte \n . Die Zeilenumbrüche werden vom Formularfeld als %0D%0A codiert. Das heisst also, dass Du zuerst den Text nach %0D %0A durchsuchen und durch \n ersetzen musst!

          Das ist soweit richtig, das Problem ist das ich die Daten aus dem mehrzeiligen Textfeld an die nächste Seite übergebe und die dann in einer Tabelle anzeigen lassen will. Also müßte ich ja die angeblich mitgesendeten Zeilenumbrüch durch <br> ersetzten. Es wird aber werder ein \n noch %0D%0A mitgesendet.

          Die alert-Ausgabe war nur zum nachsehen für mich eingefügt.

          HTH
          kaepten

          1. Hoi Manuela

            Es wird aber werder ein \n noch %0D%0A mitgesendet.

            Was wird dann gesendet? Ich kann Dein Problem leider nicht nachvolziehen...

            Zeig mir doch mal Deinen Code.

            kaepten

            1. Hoi Manuela

              Es wird aber werder ein \n noch %0D%0A mitgesendet.

              Was wird dann gesendet? Ich kann Dein Problem leider nicht nachvolziehen...

              Zeig mir doch mal Deinen Code.

              Okay der Code für die Seite wo ich die Daten eingebe und abschicke sieht so aus:

              <form id="form1" action="Bestellformular.html" method="GET" target="_self">
               <table  width = 85% cellpadding=10 border=0 cellspacing=1 name ="tabelle1" align="center">
                <tr>
                  <td width=500 height=500 valign="top">
                  <table width = 100% cellpadding=1 border=0 cellspacing=1 name ="tabelle2" align="center">
                  <tr>
                  <td colspan="2" class = "bestellBes"> <br><div align="center"><font size="+4">Order information</font></div>
                  <br></td>
                   </tr>
                    <tr>
                      <td class = "bestellBes">Customer name:</td>
                       <td  align ="left"> <input type="text" name="Customer name:" value=" " size=40 maxlenght=40 tabindex=1></td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"><br>Company:</td>
                       <td  align ="left"><br><input type="text" name="Company:" value=" " size=40 maxlenght=40 tabindex=2> </td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"><br>Street,No.:</td>
                       <td  align ="leftt"><br><input type="text" name="Street,No:" value=" " size=40 maxlenght=40 tabindex=3> </td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"><br>Zip-Code:</td>
                       <td align="left"><br>  <input type="text" name="Zip-Code:" value=" " size="10" maxlenght="10" tabindex=4></td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"<font size="+3"></font><br>City:</td>
                       <td align="left"><br>  <input type="text" name="City:" value=" " size=40 maxlenght=40 tabindex=5></td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"><br>Date:</td>
                       <td  align ="left"><br><input id="Uhr" type="text" name="Date:" value=" " size=40 maxlenght=40 tabindex=6></td>
                      </tr>
                      <tr>
                       <td class = "bestellBes"><br>Remarks:</td>
              !!!!!!!!!<td align ="left"><br> <textarea  name="Remarks:" value=" " rows=3 cols=40 wrap="physical" tabindex=7></textarea></td>
                      </tr>
                      <tr>
                      <td></td>
                      <td  align ="center"><br><br><input type="Submit"  value="okay" tabindex=8></td>
                      </tr>
                      </table>
                  </table>
              </form>

              die Stelle mit den vielen !!!-Zeichen betrifft das Textfeld.

              So und der Code auf der Empfangsseite ist folgender:

              <script language="javascript" type="text/javascript">
                <!--
                 var formular = new Array(0);
                 decode();
              /* Diese Funktion decodiert die Angaben im Pfad */
                function decode()
                 {
                  var url   = window.location.search;

              !!!!!!! wen ich an dieser Stelle alert(url); mache kann ich mir ja anzeigen lassen was von den Daten ankommt und da steht werder \n noch %0D%0A drin für die eigentlich mitgesendeten Zeilenumbrüche des Textfeldes !!!!!!!

              if (url != "")
                   {
                    url = url.substring(1,url.length);                      // Die Daten werden aus der
                    var a = 30;
                                                                            // Url extrahiert und in
                    liste = url.split("&");                                 // Wertepaare am & getrennen
                    for (i=0;i<=liste.length-1;i++)
                     {
                      temp = liste[i].split("=");                           // Feld und Daten jedes
                      formular.splice(formular.length,2,temp[0],temp[1]);   // Paares werden zerlegt
                     }
                    for (i=0;i<=formular.length-1;i++)
                    {
                     for(x=0;x<=formular[i].length; x++)
                     {
                       if(x >a)
                       {
                        a = a+30;
                        alert("neue Zeile");
                       }
                     }

              formular[i] = formular[i].replace(/+/g," ");          // Ersetzen des + durch Blank
                     formular[i] = unescape(formular[i]);                   // Escapesequenzen rekonstruieren

              if(formular[i]== " ")
                        {
                          formular[i]= "-";
                        }
                    }
                   }
                 }
               //-->
              </script>

              <body text="#000000"background="../Bilder/WHITE1.jpg" bgcolor="#FFFFFF" link="#0000FF" alink="#FF0000" vlink="#FF0000">

              <table  width = 100% cellpadding=10 border= 0 cellspacing=1 name ="tabelle1" align="center">
                <tr>
                  <td width=70% height=500 valign="top" align="center">
                  <table border= 0 cellpadding=5 cellspacing= 0 width=90% align="center">
                      <tr>
                      <td colspan="2" align="center"><font size=5 color="#000000"><big><b><u>order form</u><b></big></font><br><br></td>
                      </tr><pre>
                       <script>
                       <!--
                       for(var i=0;i<formular.length;i++)
                       {
                            document.write("<tr><td class=bestellBes>" + formular[i] + "<br><br></td>");
                            document.write("<td class=bestellBes>" + formular[++i] + "<br><br></td></tr>");

              }
                      //-->
                       </script></pre>
                      </table>
                  <br>
                  <input  type = button value="print order form " onClick="javascript:window.print()">
                  </td>
                   <td width=250 height=500 background="../Bilder/WHITE2.jpg" valign "top">
                  <font size=3 color="#000000"><script>document.write(parent.Bestell_Speich)</script></font>
                   </td>
                </tr>
              </table>

              kaepten

              1. Hoi Manuela

                Bei mir werden besagte Zeilenumbrüche übertragen.

                Du machst hier ein Replace

                formular[i] = formular[i].replace(/+/g," ");          // Ersetzen des + durch Blank

                und dann ein unescape!

                formular[i] = unescape(formular[i]);                   // Escapesequenzen rekonstruieren

                Den zwei Codes %0D%0A kann man Auch Escpae-Sequenzen sagen. Also ist klar, dass es nicht angezeigt wird, wenn Du sie rausfilterst!

                Allerdings muss ich sagen, dass Du in den oberen Zeilen wo Du

                alert(url);

                machst sehr wohl diese Escape Zeichenfolgen sehen solltest! Versuche mal folgeden Änderung/zustätzliche Zeile im Script:

                formular[i] = formular[i].replace(/+/g," ");          // Ersetzen des + durch Blank
                       formular[i] = formular[i].replace(/%0D%0A/g,"<br>");          // Ersetzen der Zeilenumbrüche durch <br>
                       formular[i] = unescape(formular[i]);                   // Escapesequenzen rekonstruieren

                Bei mir funktioniert jedenfalls so Dein Code!

                cheers und Mahlzeit
                kaepten

                1. Hoi Manuela

                  Bei mir werden besagte Zeilenumbrüche übertragen.

                  Du machst hier ein Replace

                  formular[i] = formular[i].replace(/+/g," ");          // Ersetzen des + durch Blank

                  und dann ein unescape!

                  formular[i] = unescape(formular[i]);                   // Escapesequenzen rekonstruieren

                  Den zwei Codes %0D%0A kann man Auch Escpae-Sequenzen sagen. Also ist klar, dass es nicht angezeigt wird, wenn Du sie rausfilterst!

                  Allerdings muss ich sagen, dass Du in den oberen Zeilen wo Du

                  alert(url);

                  machst sehr wohl diese Escape Zeichenfolgen sehen solltest! Versuche mal folgeden Änderung/zustätzliche Zeile im Script:

                  formular[i] = formular[i].replace(/+/g," ");          // Ersetzen des + durch Blank
                         formular[i] = formular[i].replace(/%0D%0A/g,"<br>");          // Ersetzen der Zeilenumbrüche durch <br>
                         formular[i] = unescape(formular[i]);                   // Escapesequenzen rekonstruieren

                  Bei mir funktioniert jedenfalls so Dein Code!

                  cheers und Mahlzeit
                  kaepten

                  Der Code funktioniert auch bei mir, aber nur wenn ich die Entertaste nach jeder Zeile von hand drücke. Laut Selfhtml Dockumentation soll aber in Textarea's der automatische Zeilenumbruch mitgesendet werden und das funzt bei mir net.

                  Guten Appetit
                  Manuela

                  1. Hoi Manuela
                    Mit vollem Bauch gehts weiter! Nun muss ich aber mit Dir schimpfen! Erst jetzt verstehe ich Dein _wirkliches_ Problem, warum sagtest Du das nicht früher. Du beziehst Dich nur auf die Umrüche die automatisch durch das <textarea wrap="physical" ... generiert werden und nicht auf diejenigen die mit <Enter> gemacht werden.

                    Wenn das so ist, dann bin ich auch überfragt. Es geht auch bei mir nicht (IE6). Sorry.

                    Aber einen Hinweis habe ich noch:
                    Die Formularfelder mit Name z.B. "Customer name:" würde ich wirklich nicht machen. Du hast alle Formularfelder-namen mit doppelpunkt und z.T. mit Leerschlag. Das finde ich sehr unschön, da dann die Variable als: "Customer+name%3A übermittelt wird.

                    cheers
                    kaepten

                    PS: Mach doch einen neuen Beitrag und formuliere Dein Problem präziser. Ich bin sicher dass es Leute gibt, die wissen wie, was, warum das <textarea wrap="physical" ... nicht sauber geht.

                    1. hallo,

                      Mit vollem Bauch gehts weiter! Nun muss ich aber mit Dir schimpfen! Erst jetzt verstehe ich Dein _wirkliches_ Problem, warum sagtest Du das nicht früher. Du beziehst Dich nur auf die Umrüche die automatisch durch das <textarea wrap="physical" ... generiert werden und nicht auf diejenigen die mit <Enter> gemacht werden.

                      will mich ja nicht einmischen, aber mir war eigentlich schon klar was sie wollte (weiss nur eben auch nicht bescheid...)

                      gruss,
                      Blau

                      1. Hoi Blau

                        ok, dann nehm ich es wohl auf meine Kappe. Habs echt nicht verstanden ...

                        kaepten

                        1. Hoi Blau

                          ok, dann nehm ich es wohl auf meine Kappe. Habs echt nicht verstanden ...

                          Nimms nicht krumm !! Ich hab mittlerweile eine Lösung gefunden, ist vielleicht nicht die schönst, aber sie geht. Ich ermittle einfach beim auslesen die Gesamtlänge und lege fest,das nach einer bestimmten anzahl von Zeichen ein \n eingefügt werden soll.
                          Siehe weiter oben im Forum.

                          kaepten

                          Vielen Dank für die Mühe
                          Manuela

  2. falls du das glück hast und auf einem windows server bist kannst du folgenden ASP code verwenden:

    <%=Replace(Request.Form("beschreibung"), vbCrLf, "<br>" & vbCrLf)%>

    funkt einwandfrei!

    beachte: deine .htm musst du auf .asp umtaufen