Problème insertion Smileys dans un Textarea

Répondre
rudyl
le 04/01/2009 à 01:19
rudyl
Bonsoir,

Voilà je suis entrain de développer ma fonction pour insérer un smiley dans un champ texarea pour être récupérer 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 vraiment pas pourquoi.

Seriez-vous m'aider.

Merci d'avance

<?php
/************************************************************************************************
*Page qui gère l'insertion des smileys dans le message test *
* *
*************************************************************************************************/
?>
<script language="JavaScript" type="text/javascript">
<!--
function actions(text) {
text = ' ' + text + '';
if (document.post.message.createTextRange && document.post.message.caretPos) {
var caretPos = document.post.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + '' : text;
document.post.message.focus();
} else {
document.post.message.value += text;
document.post.message.focus();
}
}
//-->
</script>

<table border=0 cellPadding=0 cellSpacing=0>
<tr>
<td align=center width="300">
<?php
for ($i = 0; $i < count($souriez); $i++) {
$sizeImg = GetImageSize("../images_files/smiles/".$souriez[$i][1]);
echo "<a href='javascript:actions(\"".$souriez[$i][0]."\")'>";
echo "<img src=\"../images_files/smiles/".$souriez[$i][1]."\" ".$sizeImg[3]." border=\"0\" alt=\"".$souriez[$i][2]."\">";
}
?>
</td>
</tr>
</table>


Cette page php est appelé la ou je veux voir afficher mes smileys.

Pour info le lien affiche bien le caractère de mon smiley mais il ne l'affiche pas dans le texarea une fois cliqué.
LA GLOBULE
le 04/01/2009 à 01:53
LA GLOBULE
Heu, l'image du smiley, tu veux la voir dans la textarea ?
Ou bien tu veux la voir dans "le message" écrit une fois que la textarea aura été soumise via un bouton de soumission ? (genre comme dans ce forum, quand tu insères un smiley, tu vois le code dans la textarea, mais une fois le message publié, tu vois le smiley).

La, tu nous montres ton code JS qui permet d'insérer le code du smiley dans la textarea. Ce code fonctionne t il ?
Ce qui bug, c'est uniquement l'affichage de l'image une fois le message inséré en base non ? Si oui, qu'as tu codé pour remplacer le code du smiley par l'image du smiley ?
rudyl
le 04/01/2009 à 02:26
rudyl
Alors en faite cela fonctionne niveau insertion dans dans la base plus relecture du mesage avec smiley contenu dans la base.
Ce qui fonctionnement pas c'est l'affichage du code smiley dans le textarea lors de l'écriture du message lors du clic je javascript ne fait pas son travail et affiche pas le code smiley genre :) qui correspond bien sur à une image la correspondance fonctionne correctement. Puisque j'ai fait un test d'insertion manuel dans la base puis lecture.

Merci de ton aide
i M@N
le 04/01/2009 à 18:37
i M@N
Hello.

document.post.message.value += text;


D'après ce que je comprends de ton javascript, je dirais qu'il manque un id="message" à ta balise <textarea> ... un truc comme :
<textarea id="message"></textarea>


@+...
One Love, One Heart, One Unity.
rudyl
le 04/01/2009 à 20:00
rudyl
Merci i M@N mais "id" est déjà dans mon textarea j'y avait pensé à ça.

Ce qui est vraiement bizard c'est que le lien javascript lui fonctionne puis que lorsque l'on regarde en bas dans le naigateur en passant sur le smilez le code et bien là.

Merci de votre aide
LA GLOBULE
le 04/01/2009 à 20:02
LA GLOBULE
Ce que tu peux faire, c'est regarder le code source de lephpfacile (pour mon JS qui insère le code des smileys dans la textarea) : http://www.lephpfacile.com/js/forum/forum_info.js.
Il s'agit de la fonction insertTextarea(id, string).

En gros, les 3 fonctions necessaires sont :

function getCursorPosition(id) {
var textarea = document.getElementById(id);
if (typeof textarea.selectionStart != 'undefined' )
return textarea.selectionStart;

textarea.focus();
var range = textarea.createTextRange();
range.moveToBookmark(document.selection.createRange().getBookmark());
range.moveEnd('character', textarea.value.length);
return textarea.value.length - range.text.length;
}

function setCursorPosition(id, start, end) {
var textarea = document.getElementById(id);
end = end || start;
textarea.focus();
if (textarea.setSelectionRange) textarea.setSelectionRange(start, end);
else if (document.selection) {
var range = textarea.createTextRange();
range.moveStart('character', start);
range.moveEnd('character', - textarea.value.length + end);
range.select();
}
}

function insertTextarea(id, string) {
var text_value = document.getElementById(id).value;
var position = getCursorPosition(id);

var string_start = text_value.substring(0, position);
var string_end = text_value.substring(position);

document.getElementById(id).value = string_start + string + string_end;
setCursorPosition(id, position + string.length, position + string.length);
}
rudyl
le 04/01/2009 à 22:27
rudyl
Merci La globule mais apparemment cela vient du javascript car même avec ton code cela ne fonctionne pas comme si le java été désactivé alors que cela n'est pas le cas.

Par contre y a t-il une importance dans l'appel du code Javascript c'est à dire un endroit précis (Même page que l'affichage du textarea pour l'insertion du code ou je peux le mettre n'importe ou cette fonction).

Car actuellement j'ai ma page insert pour laquel je fais un include de ma page insert_smiley pour l'affichage des smiles et c'est dans cette page que le code javascript est. Cela à t-il une importance de l'emplacement du javascript.

Merci
LA GLOBULE
le 04/01/2009 à 22:35
LA GLOBULE
Ben quand tu affiches la source html, tu vois le code de ton JS ou non ? Si oui c'est bon.

Et mon code fonctionne, il est utilisé sur lephpfacile.
As tu des erreurs JS ?
rudyl
le 04/01/2009 à 22:46
rudyl
Alors oui en effet mon code est visible dans la source de la page html.
Sinon oui avec mon code voici l'erreur : 'document.post.message' à la valeur Null ou n'est pas un objet.

Concernant ton code lorsque je l'utilise il me dit id indéfini mais cela doit être parceque j'utilise une mauvaise syntaxe.

Voici ma syntaxe de lien pour l'insertion code smile :
echo "<a href='javascript:actions(\"".$souriez[$i][0]."\")'>";

Merci
i M@N
le 05/01/2009 à 14:25
i M@N
Hello.

document.[b]post[/b].message

C'est p'tet
One Love, One Heart, One Unity.
Répondre
LoadingChargement en cours