Sauts de lignes Textarea (nl2br fonctionne pas)

Sauts de lignes Textarea (nl2br fonctionne pas) - HTML/CSS - Programmation

Marsh Posté le 22-02-2011 à 12:51:40    

Bonjour à toutes et à tous,  
 
J'ai un léger soucis,  
 
En gros, j'ai une textarea dans laquelle j'écris un peu ce que je veux, et sur un evenement onblur, j'affiche le texte écrit dans la textarea, dans une div.  
 
Le problème, c'est que j'aimerai garder les sauts de ligne de cee texte écrit, avant de l'afficher.  
 
Du coup, je me suis dit, reprend la fonction nl2br mais convertit la en javascript, mais malheureusement, cela ne fonctionne pas.  
 
 

Code :
  1. var texte = $("#mon_textarea" ).val();
  2. texte = strip_tags(texte);
  3. texte = nl2br(texte);
  4. $("#mon_div" ).html(texte);


 
 
Voici les deux fonctions que j'utilise :  
 

Code :
  1. function strip_tags(chaine, allowed)
  2. {
  3.     allowed = (((allowed || "" ) + "" ).toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c> )
  4.     var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
  5.         commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
  6.     return chaine.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
  7.     });
  8. }
  9. function nl2br(str, is_xhtml)
  10. {
  11.     var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '' : '<br>';
  12.     return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
  13. }


 
Si quelqu'un peut m'aider, ca serait génial ! Merci d'avance

Reply

Marsh Posté le 22-02-2011 à 12:51:40   

Reply

Marsh Posté le 23-02-2011 à 09:01:56    

Salut.
Mais tu utilises Jquery ... ça change tout !
J'ai un code à te proposer :

 
Code :
  1. <html>
  2. <title>Test</title>
  3. <script language="Javascript">
  4. <!--
  5. function uping(){
  6. var doc=document.getElementById('montexte').value;
  7. while(doc.indexOf("\n" )>0){
  8. doc = doc.replace("\n","<br>" );
  9. }
  10. document.getElementById("result" ).innerHTML = doc;
  11. }
  12. //--->
  13. </script>
  14. <body>
  15. <textarea id="montexte" OnBlur="javascript:uping()"></textarea>
  16. <p>Affichage :
  17. <table cellpadding='0' cellspacing='0' border='1'>
  18. <tr>
  19. <td><center><div id="result"></div></center></td>
  20. </tr>
  21. </table>
  22. </body></html>


Bonne chance !

Message cité 1 fois
Message édité par cetplus le 25-02-2011 à 02:41:09
Reply

Marsh Posté le 23-02-2011 à 10:27:30    

cetplus a écrit :

Salut.
Mais tu utilises AJAX ... ça change tout !
J'ai un code à te proposer :
 

Code :
  1. <html>
  2. <title>Test</title>
  3. <script language="Javascript">
  4. <!--
  5. function uping(){
  6. var doc=document.getElementById('montexte').value;
  7. while(doc.indexOf("\n" )>0){
  8. doc = doc.replace("\n","<br>" );
  9. }
  10. document.getElementById("result" ).innerHTML = doc;
  11. }
  12. //--->
  13. </script>
  14. <body>
  15. <textarea id="montexte" OnBlur="javascript:uping()"></textarea>
  16. <p>Affichage :
  17. <table cellpadding='0' cellspacing='0' border='1'>
  18. <tr>
  19. <td><center><div id="result"></div></center></td>
  20. </tr>
  21. </table>
  22. </body></html>


Bonne chance !


 
Je te remercie beaucoup pour ton aide, ça marche parfaitement.  
 
En plus, c'était vraiment tout bête ! Encore merci, et bonne journée.
 
Cordialement,
 
MC L.

Reply

Marsh Posté le 25-02-2011 à 00:20:44    

Il n'y a rien d'AJAX la dedans, et en plus utiliser un while sur un replace c'est un peu débile. Il faut utiliser une expression régulière avec "g" comme flag :  
doc = doc.replace(/(\\n|\n)/g,"<br>" );


---------------
Blablaté par Harko
Reply

Marsh Posté le 25-02-2011 à 02:53:09    

Tu as raison. Mais je n'avais jamais utilisé cette syntaxe.
On en apprends tout les jours.

Reply

Marsh Posté le 25-02-2011 à 09:52:31    

cetplus a écrit :

Tu as raison. Mais je n'avais jamais utilisé cette syntaxe.
On en apprends tout les jours.


Excuse moi mais maintenant tu as remplacé AJAX par Jquery, mais il n'y a rien de Jquery dans ton code


---------------
Blablaté par Harko
Reply

Marsh Posté le 01-03-2011 à 08:27:31    

Pas dans le miens : $("#mon_div" ).html(texte);

Reply

Marsh Posté le 01-03-2011 à 09:41:12    

oui enfin, mais psa dans le code que tu donnes plus haut :)


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed