Die Eigenschaft .val()
eines Elements in jQuery für <textarea>
scheint nicht mit neuen Zeilen zu funktionieren. Ich brauche diese Funktion, da der Textbereich die Eingabetaste erkennen und als Vorschau anzeigen soll, wobei die neue Zeile intakt ist.
Was jedoch passiert, wird in dieser Geige gezeigt: Ссылка . Der Text wird angezeigt, aber nicht in einer neuen Zeile.
Wie kann ich erreichen, dass die Vorschau neue Zeilen enthält, und ich weiß, dass dies möglich ist, weil dies in der Stapelüberlauf-Frage-Vorschau geschieht.
Danke.
P.S Ich habe in diesem Zusammenhang andere Links zu SO gesehen, aber sie alle sagen, dass der Endbenutzer einen Code verwenden soll, was für mich keine ideale Methode ist. Wie kann ich dies erreichen, ohne dass der Endbenutzer einen bestimmten Code schreibt, wie hier in SO Question Preview, wo die Enter wie in der Vorschau funktioniert.
Es ist ein CSS-Problem, kein JavaScript-Problem. HTML reduziert Leerraum standardmäßig - dies schließt das Ignorieren von Zeilenumbrüchen ein.
Fügen Sie white-space: pre-wrap
dem Ausgabe-Div hinzu. Ссылка
Dies wird in allen modernen Browsern unterstützt: Ссылка
Die erzwungenen neuen Zeilen in Textfeldern sind \n
s, andere HTML-Tags als Textarea ignorieren diese. Sie müssen <br />
verwenden, um neue Zeilen an diesen Elementen zu erzwingen.
Ich schlage vor, dass Sie JavaScript anstelle von CSS verwenden, da Sie sich bereits auf JavaScript verlassen.
%Vor%Sie können die aktualisierte Version hier finden: Ссылка
Versuchen Sie etwas wie folgt:
%Vor%In HTML werden Whitespaces standardmäßig ignoriert.
Sie könnten auch Ihr <div>
-Tag in ein <pre>
-Tag ändern:
Und das würde auch funktionieren.
In dem Fall, dass
Sie zeigen NICHT das .val () der Textarea auf einer anderen Seite an (z. B. Formular an Servlet senden und an eine andere JSP weiterleiten).
Verwendung der .val () der Textarea als Teil einer URL-Codierung (z. B. eine mailto: mit Körper als Textarea Inhalte) in Javascript / JQuery
Dann müssen Sie die textarea Beschreibung wie folgt URLEncode:
%Vor%Es gibt eine einfache Lösung: Machen Sie den Container mit pre-Tag.
%Vor%Ich habe eine bequemere Methode mit jquery gefunden.
Beispielcode
HTML
%Vor%JS
%Vor%