Comment remplacer les \n par des <br /> en JavaScript?
J'ai un textarea où j'ai insérer \n
quand l'utilisateur appuie sur entrée. Code à partir de ce textarea est envoyé à un service WCF via jQuery.ajax()
. Je ne peux pas enregistrer \n
en DB comme il n'apparaît pas dans d'autres applications de la consommation du service.
Comment puis-je le remplacer \n
avec <br />
tag?
solution
Bien beaucoup d'entre vous ont essayé et certains ont réussi avec Javascript Regex avec /g (modificateur).
À la fin, j'ai eu \n insérées deux fois, je ne sais pas pourquoi, ma conjecture est que jQuery sur l'événement keypress créé double \n qui je debug.
$('#input').keypress(function (event) {
if (event.which == '13') {
inputText = $('#input').val() + '\n';
$('#input').val(inputText);
}
});
- habituellement, il n'est pas une bonne idée de le remplacer sur le côté client
- n'est pas envoyé alors au serveur, il semble omis. Je peux le changer sur le serveur mais je ne reçois rien, sauf de texte.
- Vous devriez également stocker dans le format raw est entré, si jamais vous avez ajouté une nouvelle application pour récupérer les données qui pourrait soutenir l' /n alors sûrement, vous devez le montrer? avez-vous essayé d'encoder?
- est
#input
un<input type="text"/>
? Parce que si c'est que vous n'obtiendrez pas tout\n
. Si c'est un composant textarea, je vous suggère de convertir les données lorsque l'utilisateur clique sur le bouton pour envoyer et pas lors de la saisie. Mais mieux que ça, je voudrais juste convertir sur le côté serveur. - est textarea et je ne remplacer \n :br: à soumettre et à son tour :br: br balise html quand j'ai récupérer des données à partir du serveur. Pourquoi je ne suis pas le faire sur le serveur car en plus de balises br j'ai des images et de balise d'image est assez long à envoyer via le service de jQuery wrapper j'ai donc marquer les balises j'ai besoin de avec des virgules, comme les forums de le faire avec le [tag]
Vous devez vous connecter pour publier un commentaire.
Remplacer étendue globale
ou
il pourrait être fait comme ceci:
modifier: désolé ... les expressions régulières en javascript ne doit pas être cité
exemple de travail
\n
et pas/\n/
. Et si il était destiné à être une regex il ne ferait que remplacer la première occurrence."\n"
ou/\n/
, pas"/\n/"
. JavaScript n'est pas aussi handicapés que le PHP quand il s'agit de regex citant 😉"\n"
, si vous voulez vraiment utiliser les regex que vous pouvez faire/\n/g
.Comme dit dans les commentaires et d'autres réponse, il est préférable de le faire sur le côté serveur.
Cependant, si vous voulez savoir comment le faire sur le côté client c'est une solution facile:
Où
textareaContent
est la variable avec les données dans le textarea.Edit: Changé, de sorte qu'il remplace à l'échelle mondiale et pas seulement le premier match.
Si vous en charge le PHP, vous devriez vérifier cela: http://php.net/manual/en/function.nl2br.php
Bâtiment sur les autres réponses, c'est probablement le mieux accompli par php. Maintenant, en supposant que vous ne voulez pas ajax ce (ce qui serait inutile, et inutilement la charge du serveur), vous devriez probablement utiliser phpjs.orgs'javascript port de cette fonction:
http://phpjs.org/functions/nl2br:480
Vous pouvez utiliser un simple javascript fonction string.
De au sein de votre service WCF pouvez-vous ne pas simplement utiliser
String.Replace
?vous pouvez utiliser javascript intégré dans une fonction de remplacement avec un peu d'aide de regex, par exemple
ce code sera de retour tous les entre remplacé par
<br>
La suivante permet de remplacer toutes les instances de
\n
avec un<br />
: