2010-06-11 3 views
1

J'essaye d'analyser du texte dans un contrôle de zone de texte et de remplacer en même temps tous les
par des caractères de saut de ligne ordinaires.Un moyen de savoir quel caractère de saut de ligne utiliser en Javascript?

Je suis en mesure de le faire dans les fenêtres en remplaçant
avec CR (il ne fonctionnait pas avec CRLF assez étrangement, il m'a donné linebreak + espace vide) mais je crains que ce code ne fonctionne pas dans Unix/Mac car ils utilisent LF pour un saut de ligne.

Est-il possible d'utiliser le caractère de saut de ligne par défaut du système en javascript? Quelque chose de semblable à Environment.NewLine en .Net

(je n'étais pas capable d'écrire backslash dans cet éditeur, mais je l'utilise pour \rCR et \n pour LF)

Edit: Je dois mentionner probablement que tout fonctionne avec FF, c'est toujours internet explorer (8) J'ai des problèmes avec.

Edit2:

je peux reproduire mon problème avec ce code. Quand je lance dans IE8 je reçois « row2 ligne1 » mais quand je le lance dans FF je me casse la ligne réelle:


<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
    <script type="text/javascript"> 

    function fill() { 
     var text = "row1<br /><br />row2"; 

     $('#fill_me').text(text.replace(/<br \/>/g, '\n')); 
    } 

    </script> 

</head> 

<body onload="fill()"> 
    <textarea rows=10 cols=100 id="fill_me"></textarea> 
</body> 
</html> 

+0

Votre question est vraiment déroutant. "dans le même temps remplacer tous avec des caractères de saut de ligne ordinaires" ... remplacer tout ce qui? Quelle est votre définition de "chars de ligne ordinaire"? Moreso, l'entrée de l'échantillon + la sortie attendue + la sortie réelle serait bien, et un cas de test serait encore mieux. – ken

+0

J'ai ajouté du code qui pourrait aider à expliquer les choses. Je veux fondamentalement prendre le texte au format HTML et remplacer tous les
avec de vrais sauts de ligne dans une zone de texte. – Irro

Répondre

1

Votre problème n'est pas le caractère de nouvelle ligne, c'est votre utilisation des fonctions jQuery.

Vous devez utiliser .val() au lieu de .text() pour changer le value d'un <textarea>. .text() est pour changer le textContent des noeuds (comme un <div>, etc.). Newline caractères à l'intérieur de text() seront probablement converties en espaces simples ...

Demonstrated on jsfiddle

+0

Oh mec, je suis tellement en colère contre moi-même pour avoir manqué celui-là :). Merci! – Irro

1

Vous pouvez toujours utiliser \n comme votre personnage linebreak en Javascript.

Par exemple, la déclaration,

document.getElementById('mytextarea').value = "This is some text.\n\nAnd here is some more.";

ajoute deux retours entre le "Ceci est du texte". et "Et voici un peu plus." dans IE, Firefox, Chrome, Safari, etc.

+0

J'ai essayé cela mais il m'a seulement donné des espaces vides .. – Irro

+0

J'utilise (avec jQuery): $ ('# text_field'). Text (data.replace (/
/g, '\ n')); – Irro

+0

@Irro: J'adorerais voir comment vous l'avez essayé alors, car cela fonctionne sur tous les navigateurs que j'ai à ma disposition. Vous avez dit que vous étiez en train de mettre la valeur dans un «