Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecrire dans deux textarea à la fois

Sujet résolu
    5 juillet 2010 à 15:11:54

    Salut les javamis :p

    Quelqu'un pourrait me dire comment on pourrait écrire dans notre textarea, et qu'en même temps ce que l'on écrit soit affiché dans un autre textarea ou dans un div prévu à cet effet.

    A vrai dire, je cherche à faire comme le Zcode le fait : un aperçu en temps réel de ce que l'on rédige, et ce en prenant compte des balises de bbcode (enfin, zcode quoi ^^ ) que l'on introduit.

    Des idées?
    • Partager sur Facebook
    • Partager sur Twitter
      5 juillet 2010 à 15:26:42

      Salut,

      tu peux utiliser la fonction innerHTML si tu n'utilises pas de framework comme jQuery ou Prototype.

      En gros dans ton textarea :

      <textarea name="nom_textarea" rows="5" onkeyup="maFonction(this)"></textarea>
      


      ensuite la fonction maFonction() sera un truc du genre :

      function maFonction(element) {
      var val = element.value ; 
      document.getElementById("zonetexte").innerHTML = val;
      }
      


      avec ton div qui aura pour id zonetexte.

      Par contre, c'est un peu lourd car a chaque caractère il va updater le div, tu peux préférer l'évènement blur a la place de onkeyup, qui updatera le div que quand tu cliques hors du textarea, tu peux aussi faire un bouton aperçu comme le aperçu final du sdz avec un évènement onClick="maFonction(document.nom_formulaire.nom_textarea)" en remplaçant par les bons noms :p

      J'espere avoir ete clair ;)
      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2010 à 15:29:19

        Si tu utilise une div pour le 2nd affichage
        onkeyup="document.getElementById('ton_id').innerHTML= this.value;"
        


        Si tu utilise une textarea pour le 2nd affichage
        onkeyup="document.getElementById('ton_id').value= this.value;"
        



        Edit: Grilled ^^
        • Partager sur Facebook
        • Partager sur Twitter
          5 juillet 2010 à 15:33:38

          Ahaaaaa, bien bien !

          Mais petit détail : il faut que la value de ce que je suis en train d'écrire passe à travers un filtre php qui converti les balises bbcode :o

          Intéressant, n'est-il pas?
          • Partager sur Facebook
          • Partager sur Twitter
            5 juillet 2010 à 15:40:42

            La on te mâche le travail quand même ^^

            function maFonction(element) {
            val = element.value ; 
            document.getElementById("zonetexte").innerHTML = mon_parsage(val);
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
              5 juillet 2010 à 15:47:40

              j avais oublie le var checke l edit
              • Partager sur Facebook
              • Partager sur Twitter
                5 juillet 2010 à 15:53:33

                ^^ ah, la paresse...

                Non mais plus sérieusement, je suis plutôt un "gars du côté serveur", si vous voyez ske jveu dire :) La preuve : même ce travail mâché je ne sais pas m'en servir !

                En effet, j'ai une fonction php qui traite le message, mais sur base d'un post :
                <? function prev{
                
                	$commentaire = preg_replace('`\(gras\)(.+)\(/gras\)`isU', '<strong>$1</strong>', $commentaire); 
                	//italique
                	$commentaire = preg_replace('`\(italique\)(.+)\(/italique\)`isU', '<i>$1</i>', $commentaire);
                	//souligné
                	$commentaire = preg_replace('`\(souligné\)(.+)\(/souligné\)`isU', '<u>$1</u>', $commentaire);
                	//lien
                	//$commentaire = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $commentaire);
                	$commentaire = preg_replace('#www.[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $commentaire);
                }
                


                Alors ça va pas du tout ! Je soupçonne même qu'il faudra réécrire une fonction identique mais en js :( (ou bien ignore-je les capacités d'Ajax??)
                • Partager sur Facebook
                • Partager sur Twitter
                  5 juillet 2010 à 16:12:38

                  Non, ajax répond a ce que tu veux faire.

                  <textarea name="nom_textarea" rows="5" onkeyup="parsage(this.value)"></textarea>
                  


                  function createXhrObject()
                  {
                  	if (window.XMLHttpRequest)
                  		return new XMLHttpRequest();
                   
                  	if (window.ActiveXObject)
                  	{
                  		var names = [
                  			"Msxml2.XMLHTTP.6.0",
                  			"Msxml2.XMLHTTP.3.0",
                  			"Msxml2.XMLHTTP",
                  			"Microsoft.XMLHTTP"
                  		];
                  		for(var i in names)
                  		{
                  			try{ return new ActiveXObject(names[i]); }
                  			catch(e){}
                  		}
                  	}
                  	alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
                  }
                  
                  function parsage(value)
                  {
                  	var  xhr = createXhrObject();
                  	
                  	xhr.onreadystatechange = function()
                  	{ 
                  		if(xhr.readyState == 4)
                  		{
                  			if(xhr.status == 200)
                  			{ 
                  
                  				document.getElementById('ton_div').innerHTML=xhr.responseText;			} 
                  			else 
                  			{ 
                  				alert(xhr.status + " " + xhr.statusText); 
                  			} 
                  		} 
                  	}; 
                  	xhr.open("GET", "ajax/apercu.php?text="+value);                
                  	xhr.send(null);
                  	
                  }
                  



                  <?php
                  function prev($commentaire){
                  
                  	$commentaire = preg_replace('`\(gras\)(.+)\(/gras\)`isU', '<strong>$1</strong>', $commentaire); 
                  	//italique
                  	$commentaire = preg_replace('`\(italique\)(.+)\(/italique\)`isU', '<i>$1</i>', $commentaire);
                  	//souligné
                  	$commentaire = preg_replace('`\(souligné\)(.+)\(/souligné\)`isU', '<u>$1</u>', $commentaire);
                  	//lien
                  	//$commentaire = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $commentaire);
                  	$commentaire = preg_replace('#www.[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $commentaire);
                  
                         return $commentaire;
                  }
                  
                  echo prev($_GET['text']);
                  ?>
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                    5 juillet 2010 à 16:44:13

                    Merci Mafioo, si j'ai bien compris, t'envoie ce que l'on est en train de tapé dans l'url et on le récupère en temps réel. Puisque c'est comme ça, j'ai changé ceci :

                    xhr.open("GET", "ajax/apercu.php?text="+value);                
                    
                        Car bien entendu ce truc me donne une erreur 404, je l'ai alors remplacé par cela :     
                    
                    xhr.open("GET", "http://localhost:8888/QuestMachine/Creer_un_article_betaQM.php?text="+value);
                    

                    Et là, pire ! Dans la div où l'on écrit, toute ma page est introduite, :o
                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 juillet 2010 à 16:49:54

                      Dans mon exemple, la page apercu.php contient la fonction prev et l'echo. Aprés je connais pas le contenu de tes pages donc ...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 juillet 2010 à 17:05:02

                        Ah, il faut donc deux pages différentes :s, autant utiliser mon POST alors.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          5 juillet 2010 à 17:22:03

                          Si tu veux mettre a jour un div (avec bbcode) en même temps que tu écris dans un div, je vois pas comment faire autrement. Explique ça m'interèsse
                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 juillet 2010 à 17:26:29

                            Eh bien le zCode y parviens, c'est vrai : quand on coche "aperçu temps réel", eh bien si j'introduis une image ou un smiley, il est tout de suite interprété dans le div là en dessous.

                            Tu vois?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 juillet 2010 à 17:28:29

                              Oui, c'est de l'ajax qui est utilisé ...
                              • Partager sur Facebook
                              • Partager sur Twitter
                                5 juillet 2010 à 17:37:42

                                Oui, je sais. Et sinon, personne a une idée pour faire pareil?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 juillet 2010 à 17:43:12

                                  Pourquoi ne vas-tu pas voir le tuto dédié à ce que tu demandes, celui de Thunderseb, que tu trouveras ici ...
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 juillet 2010 à 17:50:07

                                    Bon, pardonnez mon ignorance... je vais me pencher sur le tuto de Thunderseb et faire quelques recherches sur Ajax car son potentiel a l'air énorme !

                                    Merci pour votre aide, et Mafioo, comprends que je voulais pas passer 2 jours là-dessus, mais bon ce sera l'occasion de percer enfin la bulle de l'AJax :D
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      5 juillet 2010 à 17:52:17

                                      Lit de la doc sur Ajax et tu comprendras, je t'ai déjà filé le code ...
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Ecrire dans deux textarea à la fois

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown