Je demande à jQuery de prendre du contenu textarea et de l'insérer dans un li.
Je veux qu'il conserve visuellement les sauts de ligne.
Il doit y avoir un moyen très simple de faire cela ...
javascript
jquery
line-breaks
gbhall
la source
la source
Réponses:
la source
vous pouvez simplement faire:
la source
Mettez ceci dans votre code (de préférence dans une bibliothèque de fonctions js générale):
Usage:
la création d'une fonction prototype de chaîne vous permet de l'utiliser sur n'importe quelle chaîne.
la source
Dans l'esprit de changer le rendu au lieu de changer le contenu , le CSS suivant fait que chaque nouvelle ligne se comporte comme un
<br>
:Pourquoi deux règles:
pre-line
n'affecte que les nouvelles lignes (merci pour l'indice, @KevinPauli). IE6-7 et d'autres anciens navigateurs reviennent au plus extrêmepre
qui inclutnowrap
et rend également plusieurs espaces. Détails sur ces paramètres et d'autres (pre-wrap
) sur mozilla et css-tricks (merci @Sablefoste).Bien que je sois généralement opposé à la prédilection SO pour remettre en question la question plutôt que d'y répondre, dans ce cas, le remplacement des nouvelles lignes par du
<br>
balisage peut augmenter la vulnérabilité aux attaques par injection avec une entrée utilisateur non lavée. Vous franchissez une ligne rouge vif chaque fois que vous vous trouvez en train de changer d'.text()
appels.html()
auxquels la question littérale implique qu'il faudrait faire. (Merci @AlexS d'avoir souligné ce point.) Même si vous excluez un risque de sécurité à ce moment-là, des changements futurs pourraient l'introduire involontairement. Au lieu de cela, ce CSS vous permet d'obtenir des sauts de ligne durs sans balisage en utilisant le plus sûr.text()
.la source
white-space:
options, telles quepre-wrap
. Voir css-tricks.com/almanac/properties/w/whitespace.html()
pour définir le contenu, ce qui permettrait à l'utilisateur d'insérer du HTML arbitraire à moins que vous ne le filtriez à l'avance..html()
danger @AlexS, a essayé d'incorporer.Solution
Utilisez ce code
la source
Cette fonction JavaScript considère s'il faut utiliser l'insertion ou le remplacement pour gérer le swap.
(Insérer ou remplacer des sauts de ligne HTML)
Démo - JSFiddle
la source
J'ai écrit une petite extension jQuery pour cela:
la source
pour améliorer la réponse acceptée de @Luca Filosofi,
si nécessaire, changer la clause de début de cette expression rationnelle en
/([^>[\s]?\r\n]?)
sera également intégrer les cas où le retour à la ligne vient après une balise ET des espaces, au lieu d'une simple balise immédiatement suivie d'une nouvelle lignela source
Une autre façon d'insérer du texte à partir d'une zone de texte dans le DOM en conservant les sauts de ligne consiste à utiliser la propriété Node.innerText qui représente le contenu du texte rendu d'un nœud et de ses descendants.
En tant que getter, il se rapproche du texte que l'utilisateur obtiendrait s'il mettait en évidence le contenu de l'élément avec le curseur, puis copié dans le presse-papiers.
La propriété est devenue la norme en 2016 et est bien prise en charge par les navigateurs modernes. Puis-je utiliser : une couverture mondiale de 97% lorsque j'ai publié cette réponse.
la source