Das .val () eines Textfelds berücksichtigt keine neuen Zeilen

9

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.

    
H Bellamy 12.12.2011, 21:21
quelle

9 Antworten

30

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: Ссылка

    
Matt Ball 12.12.2011, 21:24
quelle
7

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: Ссылка

    
js-coder 12.12.2011 21:25
quelle
3

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:

%Vor%

Und das würde auch funktionieren.

    
Mike Christensen 12.12.2011 21:25
quelle
2
%Vor%

Sie müssen die Zeilenumbruchzeichen durch <br> -Tags für die HTML-Ausgabe ersetzen.

Hier ist eine Demo: Ссылка

    
Jasper 12.12.2011 21:26
quelle
2

Ihre Zeilenumbrüche werden perfekt ausgegeben, aber HTML ignoriert Zeilenumbrüche: Es benötigt <br> .

Verwenden Sie eine einfache Newline-To-Funktion wie folgt:

%Vor%

jsfiddle hier: Ссылка

Code von hier: Ссылка

    
Nanne 12.12.2011 21:26
quelle
2

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%     
RuntimeException 18.12.2012 12:39
quelle
1

Es gibt eine einfache Lösung: Machen Sie den Container mit pre-Tag.

%Vor%     
Sanjib Debnath 17.09.2016 05:18
quelle
0

Ich habe eine bequemere Methode mit jquery gefunden.

Beispielcode

HTML

%Vor%

JS

%Vor%     
Nithin Chandran 02.03.2018 06:13
quelle
0
%Vor%

PHP Manueller Link

    
crazyivan 17.01.2014 04:36
quelle

Tags und Links