[Aide]Javascript

Statut
N'est pas ouverte pour d'autres réponses.

SkYlEsS

Elite
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 ?
 

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"
 

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
 

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);
  }
}
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut