J'édite un <textarea>
avec JavaScript. Le problème est que lorsque je fais des sauts de ligne, ils ne s'affichent pas. Comment puis-je faire ceci?
Je reçois la valeur pour écrire une fonction, mais elle ne donnera pas de sauts de ligne.
Le problème vient du fait que les sauts de ligne (\n\r
?) Ne sont pas identiques aux balises HTML <br/>
.
var text = document.forms[0].txt.value;
text = text.replace(/\r?\n/g, '<br />');
si vous utilisez le script général Java et que vous devez affecter une chaîne à la valeur de la zone de texte,
document.getElementById("textareaid").value='texthere\\\ntexttext'.
vous devez remplacer \n
ou < br >
par \\\n
sinon, cela donne Uncaught SyntaxError: Unexpected token ILLEGAL
sur tous les navigateurs.
Vous devez utiliser \n
pour linebreaks
à l'intérieur de textarea
Peut-être que quelqu'un trouve cela utile:
J'ai eu un problème avec les sauts de ligne qui étaient passés de variable serveur à variable javascript, puis javascript les écrivait dans textarea (en utilisant des liaisons de valeur knockout.js).
la solution était double échappant à de nouvelles lignes:
orginal.Replace("\r\n", "\\r\\n")
côté serveur, javascript n’a pas été analysé avec un seul caractère d’échappement.
Une nouvelle ligne est simplement un espace pour le navigateur et ne sera pas traitée différemment d’un espace normal (""). Pour obtenir une nouvelle ligne, vous devez insérer des éléments <BR />
.
Une autre tentative pour résoudre le problème: saisissez le texte dans la zone de texte, puis ajoutez du code JavaScript derrière un bouton pour convertir les caractères invisibles en quelque chose de lisible et dump le résultat en un fichier DIV
. Cela vous dira ce que veut votre navigateur.
Si vous souhaitez afficher du texte dans votre propre page, vous pouvez utiliser la balise <pre>
.
document.querySelector('textarea').addEventListener('keyup', function() {
document.querySelector('pre').innerText = this.value;
});
<textarea placeholder="type text here"></textarea>
<pre>
The
new line will
be respected
</pre>
J'ai un textarea avec id est # infoartist suivre:
<textarea id="infoartist" ng-show="dForm" style="width: 100%;" placeholder="Tell your contacts and collectors about yourself."></textarea>
En code javascript, j'obtiendrai la valeur de textarea et remplacerai la nouvelle ligne d'échappement (\ n\r) par la balise <br />
, telle 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é. :-)
voici ce que j'ai fait pour les mêmes problèmes que moi.
quand je passe le texte à la page suivante dans jsp, je le lis en tant que textarea au lieu de lire quelque chose comme
la sortie est donc venue comme vous le souhaitiez. 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>
Si vous avez juste besoin d’envoyer la valeur de la zone de test au serveur avec des sauts de ligne, utilisez nl2br