[resolu] Insertion Automatique D'un Smiley ? - [javascript]

:hello: à tous

Voilà, je ne suis pas très bon en javascript, pour ne pas dire mauvais :mellow:

J’ai une page (poster.php) qui contient une textarea (name=Mess)
sous ce textarea, un petit lien qui ouvre une fenêtre (smilies.php) qui liste les smiley et leur code correspondant.

Je voudrais, exactement comme sur Clubic ou les forum phpbb par exemple, que l’utilisateur, en cliquant sur le smiley, puisse avoir le code directement placé dans la textarea.

Je me suis permis de regarder le code source de clubic et des forums phpbb… je n’y comprend rien :wacko:
D’autant qu’ils sont complètement différent tous les deux <_<

Celui de clubic:


<script language='javascript'>
<!--
function add_smilie(code)
{
	opener.document.REPLIER.Post.value += ' ' + code + ' ';
	//return true;
}
//-->
</script>

avec pour chaque lien sur le smiley:


<a href='javascript:add_smilie(":code_correspondant:")'><img src="style_emoticons/default/le_smilie.gif"</a>

et celui de phpBB:


<script language="javascript" type="text/javascript">
<!--
function emoticon(text)
{
	text = ' ' + text + ' ';
	if (opener.document.forms['post'].message.createTextRange && opener.document.forms['post'].message.caretPos) {
  var caretPos = opener.document.forms['post'].message.caretPos;
  caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  opener.document.forms['post'].message.focus();
}
else
{
	opener.document.forms['post'].message.value  += text;
	opener.document.forms['post'].message.focus();
}
}
//-->
</script>

Le lien d’insertion étant le meme mais avec le nom de la fonction correspondante.

Ma question… comment puis-je adapter l’un ou l’autre par rapport à mon cas ? :unsure:

Pour rappel, si ça peut servir (et je pense bien que ça DOIT servir lol) :

  • la page qui contient le formulaire qui contient lui meme la textarea : poster.php
  • le nom de la textarea : Mess
  • le nom de la page qui génère les smilies possibles : smilies.php

En vous remerciant par avance :slight_smile:

Un petit up les amis, car j’aurais vraiment besoin de cette fonction :slight_smile:

Celui de phpbb est un peu plus evoluer c’est pour les balises il detecte si tu a selectionner un texte auquel cas il ajoute une balise ouvrante ET fermante, sinon une ouvrante si pas de fermante derriere, sinon une fermante alors que le code sus-cité de clubic est celui pour les smiley donc juste ajout d’un smiley (enfin son tag).
Apres si tu veux reutiliser l’un deux veille bien a ce que tous les elements du formulaires ai a chaque fois le meme attribut name avec le code source de clubic ou phpbb.

:hello: merci de ta réponse.

Alors je vais prendre la solution clubic, car j’ai vraiment besoin de quelque chose de simple.
J’aurais juste besoin d’être orienté sur la commande. Je ne comprend pas comment elle fonctionne. Apparement, dedans il y a le nom de la textarea, mais par exemple, chez clubic, je n’ai aucune idée de à quoi correspond le REPLIER :??: :??:

(dans la ligne - opener.document.REPLIER.Post.value += ’ ’ + code + ’ '; - )

Donc en théorie, si je le met à ma sauce, ça devrait être quelque chose du genre:


<script language='javascript'>
<!--
     function add_smil(code)
     {
           opener.document.REPLIER.Mess.value += ' ' + code + ' ';
           //return true;
     }
//-->
</script>

avec un lien sur chaque smilies:


<a href='javascript:add_smil(":code:")'><img src="smilies/mon_smilie.gif"</a>

Sauf que ça fonctionne pas :neutre:
Je clic… le lien est bien du style " javascrip:add_smil(’:rire:’) " par exemple, mais le “:coucou:” ne s’insère pas dans ma textarea :confused:

Je sais que ça vient de cette ligne : opener.document.REPLIER.Mess.value

Il faut que je la fasse à ma sauce. Mais comme je la comprend pas, je n’y arrive pas :wink:

Merci pour un coup de main :slight_smile:

REPLIER: ce serait pas le nom du form?
document.REPLIER équivaut à document.forms[‘REPLIER’] ou encore document.forms[0]
edit: vu dans la source (cool d’utiliser clubic…) REPLIER c’est un des form, utilise forms[0] si tu n’as qun seul form et pas d’attribut name

ça marche au top :super:

Merci beaucoup :jap: