nl2br und javascript - geht das?

Frank73

Mitglied
Hallo zusammen,

ich möchte die Javascript Zeilenumbrüche /n in html konforme <br> wandeln. Das ganze muss in der entsprechenden Javascript Funktion, welche mir den eingegebenen Text in ein DIV schreibt passieren. Ich habe es wie folgt probiert:

HTML:
<TEXTAREA NAME="Eingabe" ROWS="2" COLS="20" onkeyup="onKeyAusgabe1(this.value);"></TEXTAREA>

Code:
<script type="text/javascript">
function onKeyAusgabe1(value)
{  document.getElementById('id_0').innerHTML = value;
if(typeof(value)=="string") return str.replace(/(\r\n)|(\n\r)|\r|\n/g,"<BR>");
 }</script>

Das ganze funktioniert nur leider nicht und ich habe keine Ahnung warum.

Vielleicht weiß jemand eine Lösung?

Liebe Grüße

Frank
 
Ich weiß zwar nicht ob es in JavaScript die Funktion str.replace gibt, jedoch würde dein Aufruf sowieso nicht funktionieren.
du gibst hier per "return" was zurück, waas gar nicht definiert wurde.
Die Variable "str" gibt es also nicht.
Wenn dann müsste es so aussehen, was aber denk ich mal auch nicht funktionieren wird, weil du nur einzelne Buchstaben eingibts und keinen Text.
Code:
<script type="text/javascript">
function onKeyAusgabe1(value){
     if(typeof(value)=="string") value.replace(/(\r\n)|(\n\r)|\r|\n/g,"<BR>");
     document.getElementById('id_0').innerHTML = value;
 }</script>
 
Wenn dann müsste es so aussehen, was aber denk ich mal auch nicht funktionieren wird, weil du nur einzelne Buchstaben eingibts und keinen Text.

Du hast recht, das funktioniert nicht. Allerdings ist ein /n ja auch ein Zeichen und das muss ja während der Eingabe zu wandeln gehen. Die vorgeschlagene Funktion:

Code:
function nl2br (str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}

sieht ja schon mal gut aus. Allerdings weiß ich nicht, wie ich die Funktion innerhalb meiner Funktion onKeyAusgabe1(value) aufrufen soll.

Wenn das geht, dann sollte bei Übergabe eines /n ja automatisch eine Wandlung ins <br> erfolgen können. Vielleicht irre ich auch, wäre für mich aber plausibel.
 
Code:
<script type="text/javascript">
function onKeyAusgabe1(value){
     if(typeof(value)=="string") var formValue = nl2br(value,true);
     document.getElementById('id_0').innerHTML = formValue;
 }</script>
 
Habe jetzt lange hin und her gebastelt aber leider führte es zu keinem Erfolg. Normalerweise sollte es aber gehen - auch wenn ich kein Javascript Spezi bin so habe ich mich mit dem Code beschäftigt und finde darin keinen Fehler. Interpretieren ich das richtig, sollte bei jedem übergeben Zeichen die Prüfung auf /n etc erfolgen und es dann in mein div geschrieben werden. Aber er lässt sich nicht überlisten und ignoriert meine Zeilenschaltung komplett. Ich möchte auch niemanden zumuten html Code für Zeilenumbrüche zu nutzen - das ist unkomfortabel und die Javascript Lösung wäre mir viel lieber.

Vielleicht kann ja nochmal über den Code gesehen werden ob nicht irgendwo ein Zeichen falsch ist.


Code:
<script type="text/javascript">
function onKeyAusgabe1(value)
{
     if(typeof(value)=="string") var formValue = nl2br(value,true);
     document.getElementById('id_0').innerHTML = formValue;
}

function nl2br (str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}
</script>

LG

Frank
 
Dieses steht doch schon in deinem Script, musst nur true durch false ersetzen.
In deinem letzten Beitrag zeile 5 ;-)
 
SUUUUUUUUUUUUUUUUUPPPPPPPPPPPPPPEEEEEEEEEEEER************************************ und recht herzlichen Dank für die Hilfe!
 
Zurück