2009-05-14 10 views

Répondre

227

problème vient du fait que les sauts de ligne (\n\r?) Ne sont pas les mêmes que HTML <br/> balises

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

Ça marche aussi pour moi. Dans jQuery, vous pouvez faire quelque chose comme ceci: $ ('# caption'). Html ($ ('# caption'). Text(). Replace (/ \ n \ r?/G, '
')); – DavGarcia

+1

Le retour à la ligne Regexp devrait être '/ (\ r \ n | \ n | \ r)/gm' http://www.textfixer.com/tutorials/javascript-line-breaks.php – tothemario

+0

Si vous utilisez jQuery Je suggère d'utiliser '.val' - http://stackoverflow.com/questions/5583040/show-newlines-in-html-textarea/5583094#5583094 –

8

Vous devez utiliser \n pour linebreaks l'intérieur textarea

+0

Cela fonctionne pour moi, dans Chrome v 61 au moins. – Snorvarg

+0

Merci .. ça marche aussi pour moi –

3

Une nouvelle ligne est juste des espaces au navigateur et ne seront pas traités différent d'un espace normal (» «). Pour obtenir une nouvelle ligne, vous devez insérer les éléments <BR />. Une autre tentative pour résoudre le problème: Tapez le texte dans la zone de texte, puis ajoutez du JavaScript derrière un bouton pour convertir les caractères invisibles en quelque chose de lisible et vider le résultat à DIV. Cela vous dira ce que votre navigateur veut.

20

si vous utilisez java script général et vous devez attribuer la chaîne de texte valeur de la zone puis

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

vous devez remplacer \n ou <br>-\\\n

sinon, il donne Uncaught SyntaxError: Unexpected token ILLEGAL sur tous les navigateurs.

+0

ne fonctionne pas dans Firefox 38.0 – Randall

0

Si vous avez juste besoin d'envoyer la valeur du testarea au serveur avec des sauts de ligne, utilisez nl2br

11

Peut-être que quelqu'un trouvé cela utile:

J'ai eu problème avec les sauts de ligne qui ont été transmises de variable serveur javascript variable, puis javascript les écrivait à textarea (en utilisant des liaisons de valeur knockout.js).

la solution a été double échappement de nouvelles lignes:

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

sur le côté serveur, car avec un seul caractères d'échappement seulement javascript n'a pas été l'analyse syntaxique.

+0

en utilisant "\\ n" fonctionne pour moi dans Windows et je suppose qu'il fonctionnera bien dans les systèmes Linux. –

0

Voici ce que j'ai fait pour le même problème que j'avais.

quand je passe le texte à la page suivante jsp, je lis comme un textarea au lieu de lire quelque chose comme

si la sortie est venu que vous vouliez. et pour d'autres propriétés, vous pouvez utiliser comme ci-dessous.

<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

J'ai un textarea avec id est #infoartist suit:

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

Dans le code javascript, je vais valeur de textarea et remplacer la nouvelle ligne s'échapper (\ n \ r) par tag <br />, tels que:

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

donc, si vous utilisez jquery (comme moi):

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

J'espère que cela vous a aidé. :-)

Questions connexes