[Résolu] Problème insertion Smileys dans Textarea JS

Avatar du membre
Petit nouveau ! | 6 Messages

16 nov. 2010, 12:07

Bonsoir à tous,

Voilà je suis en train de m'arracher les cheveux sur une fonction pour insérer un smiley dans un champ textarea pour être récupérer ensuite via la BDD.

J'ai un petit problème pour la copie du smiley dans le textarea, j'utilise pour cela un bout de code java script mais malheureusement ça ne marche pas et je vois ne vraiment pas pourquoi.

Je voudrais faire en sorte que lors du clic sur le smiley, le code s'affiche dans le textarea. La récupération quant à elle fonctionne bien.

Je travaille en PHP, voici la fonction ;

Code : Tout sélectionner

echo '<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">'."\n\n"; [...] echo "<script type=\"text/javascript\" language=\"JavaScript\">\n"; echo "//<![CDATA["; echo "function emoticon(text) { var txtarea = document.post.texte; text = ' ' + text + ' '; if (txtarea.createTextRange && txtarea.caretPos) { var caretPos = txtarea.caretPos; caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; txtarea.focus(); } else { txtarea.value += text; txtarea.focus(); } }"; echo "//]]>"; echo "</script>\n";
Et voilà comment je l'appelle ;

Code : Tout sélectionner

echo " <form method=\"post\" name=\"post\" action=\"commentaire_post.php\">\n"; [...] echo " <textarea cols=\"80\" rows=\"4\" name=\"texte\"></textarea><br />\n"; foreach($tablesmilies as $cle => $val) { echo '<img src="commentaires/images/smilies/'.$val.'" onmouseover="this.style.cursor=\'hand\';" onclick="emoticon(\' '.$cle.' \');" alt="'.$cle.'" title="'.$cle.'" />'; }
Actuellement, il n'y a pas de réaction au clic, ni même au onmouseover. (le title fonctionne au survol).

J'espère avoir été clair et que vous pourrez me dépanner !

Merci d'avance et bonne journée.
Modifié en dernier par GGuiz le 16 nov. 2010, 19:01, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 nov. 2010, 12:14

Salut,

Utilise un lien sur l'image pour l'insertion du smiley l'image n'est pas un element cliquable (sauf si je ne montre).

@+

ps je suis pas. Certain que le forum php soit le bon(plutot js)
Il en faut peu pour être heureux ......

Avatar du membre
Petit nouveau ! | 6 Messages

16 nov. 2010, 12:22

Bonjour Moogli et merci pour ta réponse,

normalement, l'élément "onclick" permet de rendre l'image cliquable, mais j'ai quand même essayé dans le doute de faire un lien ;

Code : Tout sélectionner

echo "<a href=\"javascript:emoticon(\' '.$cle.' \');\"><img src=\"commentaires/images/smilies/".$val."\" alt=\"".$cle."\" title=\"".$cle."\" /></a>";
Mais malheureusement, ça ne fonctionne pas non plus. A part bien sur, le pointeur qui change au survol, mais là, c'est dû au lien.

Pour l'emplacement du topic, je ne savais pas vraiment où le placer, mais il me semblé plus judicieux de le mettre ici parce que je pense surtout à une erreur php et non JS, c'est un script tout fait que j'ai récupéré et qui fonctionne ailleurs.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 nov. 2010, 12:26

Si tu vire le php est que tu met lentout dans unnficjier html ca fonctionne ?

Qu'a tu dans le source html généré ? (est ce que c'est conforme a ce que tu attend ?)

A tu regardé ce que donne la console javascript ?

@+
Il en faut peu pour être heureux ......

Avatar du membre
Petit nouveau ! | 6 Messages

16 nov. 2010, 16:40

Merci Moogli,

grâce à toi mon problème est résolu !

Je n'avais pas pensé à tout passer en html, j'ai simplifié au maximum mon code et c'était en fait des balises rajoutées pour passer au w3c validator qui me posaient problème ; en passant le tout en html, je me suis aperçu que je n'avais pas fait de retour chariot avec "\n", donc la fonction n'était pas interprétée.

Code : Tout sélectionner

echo "//<![CDATA[\n"; echo "//]]>\n";
Un grand merci à toi =) Bonne journée !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

16 nov. 2010, 17:07

De rien

Peut tu ajouter le tag resolus ?

Merci

@+
Il en faut peu pour être heureux ......

Avatar du membre
Petit nouveau ! | 6 Messages

16 nov. 2010, 19:02

Voilà qui est fait. Merci encore et bonne continuation.