[Aide]Javascript

Discussion dans 'Web, design' créé par SkYlEsS, 30 Décembre 2005.

Statut de la discussion:
Fermée.
  1. Offline
    SkYlEsS Kawai
    Mon problème :

    Lorsque je clique sur un smiley afin de le mettre dans le message, il s'intercalle automatiquement à la fin du texte (Or parfois j'aimerais rajouter un smiley que j'ai oublié de placer) et je dois recliquer sur l'encadré de texte afin de pouvoir continuer à écrire. Bref l'inverse de ce forum :s

    Voici le code :

    Code:
    <form action="post.php" method="post" name="comPose">
    <a href="javascript:;" onClick="javascript: document.comPose.topic_body.value = document.comPose.topic_body.value + ':D'"><img src="smileys/1.gif" border="0"></a>
    Que dois-je rajouter, modifier pour arriver à un tel résultat ?
    SkYlEsS, 30 Décembre 2005
    #1
  2. Offline
    MbK_ Etudjant
    Il faudrait utiliser un script plus complet.

    A ta place, je trouverais un site qui propose ce script et j'irais fouiller dans le code source...

    Les fonctions pour les smiley sont assez simples à "decortiquer"
    MbK_, 30 Décembre 2005
    #2
  3. Offline
    mOrbide Elite
    Ouaip il y a pas mal de tutos pour les smileys au niveau des regex, comment faire ça avec du sql, js, machin.
    Faut fouiller un peu. Perso je n'en touche pas une en js donc là je peux pas trop aider :-( soz
    mOrbide, 1 Janvier 2006
    #3
  4. Offline
    Tifox ou pas
    Perso, j'utilise ce script, base sur un de Torsten Anacker pris sur "je-ne-sais-plus-quel-site-proposant-des-javascript". Ca marche sous IE et firefox (il parait que les autres navigateur aussi, mais pas testé), et ça permet d'insérerdu code dans un textarea à l'endroit ou se trouve le curseur ou de remplacer le code sélectionné par un autre.

    Code:
    // Script par Torsten Anacker (torsten@anaboe.net)
    function insertIcon(tag) {
    	insertCode(tag, '');
    }
    function insertCode(repdeb, repfin) {
      var input = document.forms['addpost'].elements['texte'];
      input.focus();
      /* pour l'Explorer Internet */
      if(typeof document.selection != 'undefined') {
        /* Insertion du code de formatage */
        var range = document.selection.createRange();
        var insText = range.text;
        range.text = repdeb + insText + repfin;
        /* Ajustement de la position du curseur */
        range = document.selection.createRange();
        if (insText.length == 0) {
          range.move('character', -repfin.length);
        } else {
          range.moveStart('character', repdeb.length + insText.length + repfin.length);
        }
        range.select();
      }
      /* pour navigateurs plus récents basés sur Gecko*/
      else if(typeof input.selectionStart != 'undefined')
      {
        /* Insertion du code de formatage */
        var start = input.selectionStart;
        var end = input.selectionEnd;
        var insText = input.value.substring(start, end);
        input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
        /* Ajustement de la position du curseur */
        var pos;
        if (insText.length == 0) {
          pos = start + repdeb.length;
        } else {
          pos = start + repdeb.length + insText.length + repfin.length;
        }
        input.selectionStart = pos;
        input.selectionEnd = pos;
      }
      /* pour les autres navigateurs */
      else
      {
        /* requête de la position d'insertion */
        var pos;
        var re = new RegExp('^[0-9]{0,3}$');
        while(!re.test(pos)) {
          pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
        }
        if(pos > input.value.length) {
          pos = input.value.length;
        }
        /* Insertion du code de formatage */
        var insText = prompt("Veuillez entrer le texte à formater:");
        input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
      }
    }
    Tifox, 1 Janvier 2006
    #4
Statut de la discussion:
Fermée.