Ich habe einen Textbereich, wo ich einfüge \n wenn der Benutzer die Eingabetaste drückt. Code aus diesem Textbereich wird über an einen WCF-Dienst gesendet jQuery.ajax(). Ich kann nicht speichern \n in DB, da es in anderen Anwendungen, die den Dienst nutzen, nicht angezeigt wird.
Wie kann ich ersetzen \n mit <br /> Schild?
Lösung
Nun, viele von Ihnen haben es versucht und einige haben mit Javascript Regex mit /g (globaler Modifikator) richtig gelegen. Am Ende hatte ich \n zweimal eingefügt, ich weiß nicht warum, meine einzige Vermutung ist, dass jQuery bei einem Tastendruckereignis ein doppeltes \n erstellt hat, das ich debugge.
Normalerweise ist es keine gute Idee, es auf der Clientseite zu ersetzen
– Teneff
13. Juni 2011 um 14:40 Uhr
@Teneff, \n wird dann nicht an den Server gesendet, es scheint weggelassen zu werden. Ich kann es auf dem Server ändern, aber ich erhalte nichts außer Text.
– eugenK
13. Juni 2011 um 14:42 Uhr
Sie sollten es auch im eingegebenen Rohformat speichern. Wenn Sie jemals eine neue App hinzugefügt haben, um Daten abzurufen, die das /n unterstützen könnten, sollten Sie es dann sicherlich zeigen? hast du versucht es zu codieren?
– jiplodieren
13. Juni 2011 um 14:43 Uhr
ist #input ein <input type="text"/>? Denn wenn ja, wirst du keine bekommen \n. Wenn es sich um einen Textbereich handelt, schlage ich vor, dass Sie die Daten konvertieren, wenn der Benutzer auf die Schaltfläche zum Senden klickt und nicht beim Tippen. Aber besser als das würde ich einfach serverseitig konvertieren.
– BrunoLM
13. Juni 2011 um 15:18 Uhr
@BrunoLM, #input ist Textarea und ich ersetze \n durch :br: beim Absenden und wende :br: in br HTML-Tag um, wenn ich Daten vom Server zurückerhalte. Warum ich es nicht auf dem Server mache, weil ich neben br-Tags auch Bilder habe und das Bild-Tag ziemlich lang ist, um es über den Dienst an den jQuery-Wrapper zu senden, also markiere ich die Tags, die ich brauche, mit Doppelpunkten, genauso wie Foren das tun [tagname]
– eugenK
13. Juni 2011 um 17:51 Uhr
Ersetzen Sie durch globalen Geltungsbereich
$('#input').val().replace(/\n/g, "<br />")
oder
$('#input').val().replace("\n", "<br />", "g")
es ersetzt fine global, aber es ersetzt zweimal das br-Tag auf Tastendruck
– eugenK
13. Juni 2011 um 14:50 Uhr
Teneff
es könnte so gemacht werden:
$('textarea').val().replace(/\n/g, "<br />");
bearbeiten: Entschuldigung … die regulären Ausdrücke in Javascript sollten nicht in Anführungszeichen gesetzt werden
Sie können eine einfache Javascript-String-Funktion verwenden.
string.replace("\n", "<br>")
Senad Meškin
Sie können beispielsweise die in Javascript integrierte Ersetzungsfunktion mit ein wenig Hilfe von Regex verwenden
$('#input').val().replace(/\n\r?/g, '<br />')
Dieser Code gibt alle Eingaben zurück, die durch ersetzt wurden <br>
Richard Freund
Von innerhalb deines WCF-Dienstes kannst du es einfach nicht nutzen String.Replace ?
text = text.Replace("\n","<br />");
Tun Sie dies nicht! Sie müssen einen regulären Ausdruck verwenden, um alle Übereinstimmungen global zu ersetzen. In Ihrem Fall ersetzt es zB nur das erste Vorkommen
– Karue Benson Karue
3. April 2020 um 23:44 Uhr
14312800cookie-checkSo ersetzen Sie \n durch in Javascript?yes
Normalerweise ist es keine gute Idee, es auf der Clientseite zu ersetzen
– Teneff
13. Juni 2011 um 14:40 Uhr
@Teneff, \n wird dann nicht an den Server gesendet, es scheint weggelassen zu werden. Ich kann es auf dem Server ändern, aber ich erhalte nichts außer Text.
– eugenK
13. Juni 2011 um 14:42 Uhr
Sie sollten es auch im eingegebenen Rohformat speichern. Wenn Sie jemals eine neue App hinzugefügt haben, um Daten abzurufen, die das /n unterstützen könnten, sollten Sie es dann sicherlich zeigen? hast du versucht es zu codieren?
– jiplodieren
13. Juni 2011 um 14:43 Uhr
ist
#input
ein<input type="text"/>
? Denn wenn ja, wirst du keine bekommen\n
. Wenn es sich um einen Textbereich handelt, schlage ich vor, dass Sie die Daten konvertieren, wenn der Benutzer auf die Schaltfläche zum Senden klickt und nicht beim Tippen. Aber besser als das würde ich einfach serverseitig konvertieren.– BrunoLM
13. Juni 2011 um 15:18 Uhr
@BrunoLM, #input ist Textarea und ich ersetze \n durch :br: beim Absenden und wende :br: in br HTML-Tag um, wenn ich Daten vom Server zurückerhalte. Warum ich es nicht auf dem Server mache, weil ich neben br-Tags auch Bilder habe und das Bild-Tag ziemlich lang ist, um es über den Dienst an den jQuery-Wrapper zu senden, also markiere ich die Tags, die ich brauche, mit Doppelpunkten, genauso wie Foren das tun [tagname]
– eugenK
13. Juni 2011 um 17:51 Uhr