JS: Text aus Textarea -> Zeilenumbruch bei Ausgabe

schutzgeist

Erfahrenes Mitglied
Hallo,

ich hab schon wieder eine Frage zu dem verflixten JS ;)

Ich arbeite gerade an einem DFML-Formular in dem ich u.a. auch Textareas habe.
Die Inhalte kann ich der nächsten Ebene jeweils mit einer Variable übergeben und wieder darstellen, z.B. ##kommentar##

Wenn das Formular abgesendet wird, werden dort ja die Zeilenumbruche als /n oder \n mitgesendet..? soviel meine ich zu wissen, hab ich mittlerweile rausbekommen ;)

Wie kann ich nun ##kommentar## wieder mit Zeilenumbruchen (\n durch <br> ersetzen) ausgeben?

Danke :)
schutzgeist
 
Code:
function nl2br(s,m)
{ 
  var p  = document.createElement('pre');
  if(m)
    {
      var t  = document.createTextNode(s);
      p.appendChild(t);
    }
  else
    {
      p.innerHTML=s
    }
  return String(p.innerHTML).replace(/\n/g,'<br>');
}
...arbeitet ähnlich wie die gleichnamige PHP-Funktion, hat aber einen 2. Parameter.
Über diesen kannst du regeln, ob der Text als HTML-Code oder als Zeichendaten zurückgegeben wird(abgesehen von den ersetzten <br>, die kommen natürlich immer als HTML-Code)

Hier mal nen Bsp.:
Code:
<html>
<head>
<title>Test</title>
<script type="text/javascript">
<!--
function nl2br(s,m)
{ 
  var p  = document.createElement('pre');
  if(m)
    {
      var t  = document.createTextNode(s);
      p.appendChild(t);
    }
  else
    {
      p.innerHTML=s
    }
  return String(p.innerHTML).replace(/\n/g,'<br />');
}

//-->
</script>
<style type="text/css">
<!--
div{background:#f1f1f1;width:200px;}
-->
</style>
</head>
<body>
  <textarea onkeyup="document.getElementById('div1',0).innerHTML=nl2br(this.value,0);document.getElementById('div2',1).innerHTML=nl2br(this.value,1)"></textarea>
  <center>
    <b>nl2br('String',0)</b>
    <div id="div1"></div>
    
    <b>nl2br('String',1)</b>
    <div id="div2"></div>
  </center>
</body>
</html>

Ich hoffe, das war es, was du meintest.
 
Ich weiß leider nicht wirklich, wie das ich in mein Formular eingebaut bekomme :(

Hier mal das abgespeckte Formular:
Code:
##head##
<!-- Ebene 1: Formular -->
<form id="form1" name="form1" method="post" action="">

[...]

<input name="sofort" type="checkbox" id="sofort" value="x"/> sofort <br />
<input name="heute" type="checkbox" id="heute" value="x"/> heute<br />
<input name="tage" type="checkbox" id="tage" value="x"/> n&auml;chste 1-2 Tage <br />

[...]

<textarea name="info" cols="70" rows="5" id="info"></textarea> <br /> 

[...]   
  
<input type="submit" name="Submit" value="Senden" />  
<input name="drucken" type="button" value="Seite drucken" onClick="javascript:window.print();">
</form> 
</P>
</BODY>
</HTML>
##WINDOWSIZE=650,700 nomenu nobuttons##
<DFML>
 @@EMAIL ##an##
 @@BETREFF Mitteilungsmeldezettel
 @@DFML
 ##*WINDOWSIZE=650,710 nomenu nobuttons##
 ##*Include HEAD##
 <!-- Ebene 2: Daten aus Ebene 1 werden ausgegeben und ergänzt -->
 <!-- Ausgabe der bisherigen Daten. Diese werden wiederum hidden an die nä. Ebene übergeben -->
<form id="form1" name="form1" method="post" action="">

[...]

<input type="hidden" name="sofort2" value="##sofort##"> [##sofort##] sofort <br />
<input type="hidden" name="heute2" value="##heute##"> [##heute##] heute <br />
<input type="hidden" name="tage2" value="##tage##"> [##tage##] n&auml;chste 1-2 Tage <br />

[...]

<input type="hidden" name="info" value="##info##">##info##<br />

[...]

<INPUT TYPE=SUBMIT NAME="ACK_GFL" VALUE="Rückmeldung senden">
</form>
 
 
 ##*/FORM##
 ##*TAIL##
</DFML>
 
<NEXTSTEP>
 
<DFML>
 @@EMAIL ##zurueck##
 @@BETREFF Mitteilungsmeldezettel
 @@DFML
 ##*WINDOWSIZE=650,710 nomenu nobuttons##
 ##*Include HEAD##
 <!-- Ebene 3: Ausgabe Daten Ebene 1 und Ergänzungen Ebene 2 -->
 <!-- nochmalige Ausgabe -->
[...]

[##sofort##] sofort
[##heute##] heute
[##tage##] n&auml;chste 1-2 Tage

[...]

##info##

[...]

##*/FORM##
 ##*TAIL##
</DFML>

JS und CSS kann ich jeweils nach ##head## notieren...
 
Zuletzt bearbeitet:
Ich muss gestehen, als ich "DFML" gelesen habe, ging ich von einem Tippfehler aus :)

Du könntest versuchen, per JS den bearbeiteten String aus dem Textarea in einem versteckten input(mit dem entsprechenden Namen) zu speichern...vielleicht funktioniert das ja.
 
Naja...das wäre eine normale Zuweisung von Formularwerten, bspw. so:
Code:
<textarea onkeyup="this.form.nameDesFeldes.value=nl2br(this.value,1);"></textarea>
<input name="nameDesFeldes" type="hidden">
nameDesFeldes wäre dabei der Name für den Platzhalter in der nächsten Ebene.

Ist aber alles nur hypothetisch, ich hab keinen Schimmer, was bei dieser Technik vor sich geht und ob es klappt :-(
 

Neue Beiträge

Zurück