IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Novice creation d'un textarea


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut Novice creation d'un textarea
    Bonjour,

    Je débute en javascript et je rencontre quelques soucis. Pour vous c'est surement un jeux d'enfant mais pour moi une grande étape à franchir.

    Je suis en train de concevoir un éditeur de texte textarea en ligne, comme ceux utilisé pour poster mais j'ai un souci avec le bouton d'une liste numérotée.

    La liste ne s'incrémente pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
       <a href="javascript:var cpt=list(cpt);"><img src="images/texte/text_list_numbers.png"></a>
     
    function AddText(startTag,defaultText,endTag) 
    {
       with(document.poster)
       {
          if (message.createTextRange) 
          {
             var text;
             message.focus(message.caretPos);
             message.caretPos = document.selection.createRange().duplicate();
             if(message.caretPos.text.length>0)
             {
                //gère les espace de fin de sélection. Un double-click sélectionne le mot
                //+ un espace qu'on ne souhaite pas forcément...
                var sel = message.caretPos.text;
                var fin = '';
                while(sel.substring(sel.length-1, sel.length)==' ')
                {
                   sel = sel.substring(0, sel.length-1)
                   fin += ' ';
                }
                message.caretPos.text = startTag + sel + endTag + fin;
             }
             else
                message.caretPos.text = startTag+defaultText+endTag;
          }
          else message.value += startTag+defaultText+endTag;
       }
    }
     
     function list(cpt)
     {
     
     	cpt=cpt+1;
     	AddText("list"cpt,"","/list")
     	return cpt;
     
     }
    Je suis vraiment un grand novice. Pouvez vous m'aidez please?

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Salut,

    essaie en corrigeant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span onclick="cpt=list(cpt);"><img src="images/texte/text_list_numbers.png"></span>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <script type='text/javascript'>
    	var cpt = 0;
    function AddText(startTag,defaultText,endTag) 
    {
         with(document.poster)
       {
          if (message.createTextRange) 
          {
             var text;
             message.focus(message.caretPos);
             message.caretPos = document.selection.createRange().duplicate();
             if(message.caretPos.text.length>0)
             {
                //gère les espace de fin de sélection. Un double-click sélectionne le mot
                //+ un espace qu'on ne souhaite pas forcément...
                var sel = message.caretPos.text;
                var fin = '';
                while(sel.substring(sel.length-1, sel.length)==' ')
                {
                   sel = sel.substring(0, sel.length-1)
                   fin += ' ';
                }
                message.caretPos.text = startTag + sel + endTag + fin;
             }
             else
                message.caretPos.text = startTag+defaultText+endTag;
          }
          else message.value += startTag+defaultText+endTag;
       }
    }
     
     function list(cpt)
     {
     
     	cpt=cpt+1;
     	AddText("list"+cpt,"","/list");
     	return cpt;
     
     }
     </script>

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par yakiniku Voir le message
    Salut,

    essaie en corrigeant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <span onclick="cpt=list(cpt);"><img src="images/texte/text_list_numbers.png"></span>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    <script type='text/javascript'>
    	var cpt = 0;
    function AddText(startTag,defaultText,endTag) 
    {
         with(document.poster)
       {
          if (message.createTextRange) 
          {
             var text;
             message.focus(message.caretPos);
             message.caretPos = document.selection.createRange().duplicate();
             if(message.caretPos.text.length>0)
             {
                //gère les espace de fin de sélection. Un double-click sélectionne le mot
                //+ un espace qu'on ne souhaite pas forcément...
                var sel = message.caretPos.text;
                var fin = '';
                while(sel.substring(sel.length-1, sel.length)==' ')
                {
                   sel = sel.substring(0, sel.length-1)
                   fin += ' ';
                }
                message.caretPos.text = startTag + sel + endTag + fin;
             }
             else
                message.caretPos.text = startTag+defaultText+endTag;
          }
          else message.value += startTag+defaultText+endTag;
       }
    }
     
     function list(cpt)
     {
     
     	cpt=cpt+1;
     	AddText("list"+cpt,"","/list");
     	return cpt;
     
     }
     </script>

    Haaa tu es un DIEUX, je savais bien que ca n'aurait pas été compliqué pour des pros .
    J'y étais presque, j'avais pensé à initialiser également cpt=0 mais je l'avais mis en haut de ma page dans une autre balise script. Ça me m'était une erreur.

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Une autre petite question, pourquoi faut il ajouter un span au lieu de la balise <a>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    Personnellement je préfère utiliser les balises <a> pour les liens et les <span> (ou <div>) pour les autres besoins, mais ca n'engage que moi ^^

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Je viens d'essayer avec la balise <a> mais le hic, c'est que ca m'ouvre une page blanche avec le résultat

    J'aurais bien laissé la balise span, mais je dois avoir une bordure grise autour de mon icon et lorsque ma souris se positionne dessus je devrais avoir une petite main pour montrer que c'est un lien.

    Tu as une solution stp?

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    C'est bon j'ai trouvé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="javascript:list();"><img src="images/texte/text_list_numbers.png"></a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <script type='text/javascript'>
    	var cpt = 0;
    function AddText(startTag,defaultText,endTag) 
    {
         with(document.poster)
       {
          if (message.createTextRange) 
          {
             var text;
             message.focus(message.caretPos);
             message.caretPos = document.selection.createRange().duplicate();
             if(message.caretPos.text.length>0)
             {
                //gère les espace de fin de sélection. Un double-click sélectionne le mot
                //+ un espace qu'on ne souhaite pas forcément...
                var sel = message.caretPos.text;
                var fin = '';
                while(sel.substring(sel.length-1, sel.length)==' ')
                {
                   sel = sel.substring(0, sel.length-1)
                   fin += ' ';
                }
                message.caretPos.text = startTag + sel + endTag + fin;
             }
             else
                message.caretPos.text = startTag+defaultText+endTag;
          }
          else message.value += startTag+defaultText+endTag;
       }
    }
     
     function list()
     {
     
     	cpt=cpt+1;
     	AddText("list"+cpt,"","/list");
     
     }
     </script>
    à mon avis, cpt doit etre ainsi déclaré comme variable globale.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Avril 2010
    Messages : 34
    Points : 23
    Points
    23
    Par défaut
    oui, elle est déclaré en globale, du coup c'est vrai que le "cpt=" ne servait pas à grand chose

    Sinon, juste pour info, si tu veux changer le style de ton <span> il suffit de rajouter dans ton code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="style_img" onclick="list(cpt);"><img src="images/texte/text_list_numbers.png"></span>
    et dans ta page CSS :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #style_img
    {
        pointer: cursor;
        border : 1px solid black;
    }
    Mais tu peux laisser le <a>, ca marche très bien aussi

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Je te remercie de ton aide

    Bonne journée

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Encore une petite question,

    Je suis en train de faire la partie prévisualisation, tout fonctionne à merveille sauf cette liste numéroté

    car une fois le code remplie, je remplace les balises [liste1][liste2][liste3].....
    par le code html (<ul><li> jjjjjj </li></ul>)

    Mais comment puis je faire avec les numéro?

    Voici mon code pour une liste normal et la numéroté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       <a href="javascript:AddText('<list>','','</list>');"><img src="images/texte/text_list_bullets.png"></a>
       <a href="javascript:list();"><img src="images/texte/text_list_numbers.png"></a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     function list()
     {
     	cpt=cpt+1;
     	AddText("<list"+cpt+">","","</list>");
     
     }
    function preview(textareaId, previewDiv) {
    	var field = textareaId.value;
    	if (field) {
     
    		field = field.replace(/&lt;list&gt;([\s\S]*?)&lt;\/list&gt;/g, '<ul><li>$1</li></ul>');
     
    		for(i=1;i<cpt;i++){
    			field = field.replace(/&lt;list+i+&gt;([\s\S]*?)&lt;\/list&gt;/g, '<ol><li>$1</li></ol>');
    		}		
     
    		document.getElementById(previewDiv).innerHTML = field;
    	}
    }
    Apparemment ma syntaxe doit être mauvaise dans le field.replace pour ajouter le cpt.

    Je souhaiterai récupérer également mon textarea dans un input pour l'envoyer lors de la validation de mon formulaire, est ce possible?

    Merci

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 551
    Points : 264
    Points
    264
    Par défaut
    Citation Envoyé par pek.plus.ultra59 Voir le message
    Encore une petite question,

    Je suis en train de faire la partie prévisualisation, tout fonctionne à merveille sauf cette liste numéroté

    car une fois le code remplie, je remplace les balises [liste1][liste2][liste3].....
    par le code html (<ul><li> jjjjjj </li></ul>)

    Mais comment puis je faire avec les numéro?

    Voici mon code pour une liste normal et la numéroté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       <a href="javascript:AddText('<list>','','</list>');"><img src="images/texte/text_list_bullets.png"></a>
       <a href="javascript:list();"><img src="images/texte/text_list_numbers.png"></a>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     function list()
     {
     	cpt=cpt+1;
     	AddText("<list"+cpt+">","","</list>");
     
     }
    function preview(textareaId, previewDiv) {
    	var field = textareaId.value;
    	if (field) {
     
    		field = field.replace(/&lt;list&gt;([\s\S]*?)&lt;\/list&gt;/g, '<ul><li>$1</li></ul>');
     
    		for(i=1;i<cpt;i++){
    			field = field.replace(/&lt;list+i+&gt;([\s\S]*?)&lt;\/list&gt;/g, '<ol><li>$1</li></ol>');
    		}		
     
    		document.getElementById(previewDiv).innerHTML = field;
    	}
    }
    Apparemment ma syntaxe doit être mauvaise dans le field.replace pour ajouter le cpt.

    Je souhaiterai récupérer également mon textarea dans un input pour l'envoyer lors de la validation de mon formulaire, est ce possible?

    Merci
    Je pense que c'est .value que tu cherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('InputID').value = document.getElementById('textAreaId').value ;

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par defacta Voir le message
    Je pense que c'est .value que tu cherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('InputID').value = document.getElementById('textAreaId').value ;

    Merci defacta, je viens de tester et ca fonctionne avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById('InputID').value = field;
    Vous êtes tous des dieux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creation d'un textarea lors d'un clic de souris
    Par gentil dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2009, 18h18
  2. [c++ builder] creation de surface sur TPanel
    Par JEG dans le forum DirectX
    Réponses: 7
    Dernier message: 23/09/2002, 22h41
  3. [Kylix] SIGSEGV 11 - creation form
    Par pram dans le forum EDI
    Réponses: 1
    Dernier message: 29/08/2002, 15h24
  4. Creation de fiche dynamique
    Par Mouss26 dans le forum C++Builder
    Réponses: 7
    Dernier message: 24/07/2002, 07h56
  5. Creation d une clee dans la registry en VC++
    Par rico27fr dans le forum MFC
    Réponses: 4
    Dernier message: 30/05/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo