2016-09-18 4 views
1
<div class="cardtitle">WEB</div> 
<textarea id="web"> 
abc 
abc 
abc 
</textarea> 

<div id="btnprint">PRINT</div> 

JS verlorenSchreiben auf einem neuen Fenster - neue Linien

tosend = ''; 
$('#btnprint').click(function(){ 
    $('.cardtitle').each(function(){ 
     tosend = tosend + 
     $(this).text().toUpperCase() + '<br>' + 
     $(this).next().val() + 
     '<hr>' 
    }); 
    w=window.open(); 
    w.document.write(tosend); 
    w.print(); 
    w.close(); 
}); 

Ergebnis ist abc abc abc
Statt:
abc abc abc

Neue Linien sind verloren.

+1

Sie müssen in '$ (this) .text()' mit ''
all Zeilenumbrüche ersetzen. – Barmar

+0

Oder wickeln Sie '

' '
' um 'tosend'. – Barmar

Antwort

2

Umhüllen Sie es in einem <pre> Tag, so dass die Formatierung nicht verloren geht.

$('#btnprint').click(function(){ 
    var tosend = '<pre>'; 
    $('.cardtitle').each(function(){ 
     tosend = tosend + 
     $(this).text().toUpperCase() + '<br>' + 
     $(this).next().val() + 
     '<hr>' 
    }); 
    tosend += '</pre>'; 
    w=window.open(); 
    w.document.write(tosend); 
    w.print(); 
    w.close(); 
}); 
1

Neue Zeilenzeichen werden nicht als Zeilenumbrüche in HTML gerendert. Sie müssen den Tag <br> verwenden, um eine neue Zeile zu beginnen.

Was können Sie tun, ist es, die neuen Zeilen Zeichen mit <br> s zu ersetzen:

... 
$(this).next().val().replace(/[\n]/g, "<br>") 
... 
+0

nur die erste neue Zeile wird ersetzt! – bonaca

+0

@bonaca Sie haben Recht. Bearbeitete meine Antwort, um alle Instanzen neuer Zeilenzeichen zu ersetzen. –

Verwandte Themen