2009-05-14 5 views

risposta

227

problema deriva dal fatto che le interruzioni di linea (\n\r?) Non sono le stesse in formato HTML <br/> tag

var text = document.forms[0].txt.value; 
text = text.replace(/\r?\n/g, '<br />'); 
+6

Questo funziona anche per me. In jQuery puoi fare qualcosa del genere: $ ('# caption'). Html ($ ('# caption'). Text(). Replace (/ \ n \ r?/G, '
')); – DavGarcia

+1

L'interruzione di riga Regexp dovrebbe essere '/ (\ r \ n | \ n | \ r)/gm' http://www.textfixer.com/tutorials/javascript-line-breaks.php – tothemario

+0

Se si utilizza jQuery Suggerisco di usare '.val' - http://stackoverflow.com/questions/5583040/show-newlines-in-html-textarea/5583094#5583094 –

8

È necessario utilizzare \n per linebreaks all'interno textarea

+0

Questo funziona per me, in Chrome v 61 almeno. – Snorvarg

+0

Grazie .. funziona anche per me –

3

Una nuova linea è solo spazi bianchi al browser e non saranno trattati qualsiasi diverso da uno spazio normale (" "). Per ottenere una nuova riga, è necessario inserire gli elementi <BR />.

Un altro tentativo di risolvere il problema: Digitare il testo nella textarea e poi aggiungere un po JavaScript dietro un pulsante per convertire i caratteri invisibili a qualcosa di leggibile e scaricare il risultato a un DIV. Questo ti dirà cosa vuole il tuo browser.

20

se si utilizza lo script generale java ed è necessario assegnare stringa di testo Valore zona allora

document.getElementById("textareaid").value='texthere\\\ntexttext'. 

è necessario sostituire \n o <br>-\\\n

altrimenti fornisce Uncaught SyntaxError: Unexpected token ILLEGAL su tutti i browser.

+0

non funziona in Firefox 38.0 – Randall

0

Se avete solo bisogno di inviare il valore della testarea al server con le interruzioni di riga utilizzare nl2br

11

Forse qualcuno trovato utile:

Ho avuto problemi con interruzioni di riga che sono stati passati da variabile del server a JavaScript variabile, e quindi javascript li stava scrivendo in textarea (usando i binding del valore knockout.js).

La soluzione è stata l'escape doppio nuove linee:

orginal.Replace("\r\n", "\\r\\n") 

sul lato server, perché con soli caratteri di escape singoli javascript non è stata l'analisi.

+0

utilizzando "\\ n" funziona per me in Windows e presumo che funzionerà correttamente nei sistemi Linux. –

0

ecco la cosa che ho fatto per lo stesso problema che ho avuto.

quando sto passando il testo alla pagina successiva in JSP, lo sto leggendo come una textarea invece di leggere qualcosa di simile

modo l'output è venuto come si voleva. e per altre proprietà, è possibile utilizzare come di seguito.

<textarea style="background-color: white; border: none; width:660px;font-family: Arial, Helvetica, sans-serif; font-size:1.0em; resize:none;" name="text" cols="75" rows="15" readonly="readonly" ><s:property value="%{text}"/></textarea> 
2

Ho un textarea con id è #infoartist segue:

<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea> 

Nel codice javascript, vado a prendere valore del textarea e sostituire la fuga nuova linea (\ n \ r) per <br /> tag, come ad esempio:

var text = document.getElementById("infoartist").value; 
text = text.replace(/\r?\n/g, '<br />'); 

Quindi, se si sta utilizzando jQuery (come me):

var text = $("#infoartist").val(); 
text = text.replace(/\r?\n/g, '<br />'); 

Spero che ti abbia aiutato. :-)