Changer la valeur d'un textarea...

Sqilr -  
kizibag Messages postés 105 Statut Membre -
...en cliquant sur un lien dans un script php.
Meme sans tenir compte du php, comment fait-on?
En fait, il faut juste ajouter dans le textarea un truc genre :-) lorsque que l'utilisateur clique sur le smiley correspondant.
A voir également:

4 réponses

redg
 
salut

<img src="../pict/smile01.gif" onclick="texte_news.innerHTML= texte_news.innerHTML + ':-)'">

@+
4
OmEn
 
Il faut faire comme suit :

<BUTTON SRC="smiley.jpeg" ONCLICK="JavaScript:message.value =':-)'">

d'ac ?

@+

-----OmEn [i2n]-----
----www.i-2n.net----
1
Sqilr
 
Un systeme équivalent à le meme effet
<img src=../pict/smile01.gif onclick=texte_news.innerHTML=':-)'>

mais avec les deux le problème est le meme, ça remplace le texte déjà inscrit dans le textarea par :-), mais ce que je veut faire c'est àjouter :-) au texte (sans reloader la page).

Merci quand même.
0
kizibag Messages postés 105 Statut Membre
 
Je déterre ce post qui est raiment très vieux, mais qui ressort assez rapidement sur google, ayant étais dans le même cas, je pense que ça peut servir pas mal pour les futures personnes qui tomberont sur ce post :

donc pour ajouter des smileys dans un textarea sans tout supprimer au passage, voici la fonction javascript qui le fait pour vous :

/* à mettre entre <head>&</head> */
function putSmiley(tt,src) {
TAinsert(" "+tt+" ","" );
}
function TAinsert(text1,text2) {
var ta=document.getElementById('message'); /* ici, mettre l'id du textarea ou input text cible */
if (document.selection) {
var str=document.selection.createRange().text;
ta.focus();
var sel=document.selection.createRange();
if (text2!="" ) {
if (str=="" ) {
var instances=countInstances(text1,text2);
if (instances%2 !=0) sel.text=sel.text + text2;
else sel.text=sel.text + text1;
} else sel.text=text1 + sel.text + text2;
} else sel.text=sel.text + text1;
} else if (ta.selectionStart || ta.selectionStart ==0) {
if (ta.selectionEnd > ta.value.length) ta.selectionEnd=ta.value.length;
var firstPos=ta.selectionStart;
var secondPos=ta.selectionEnd+text1.length;
var contenuScrollTop=ta.scrollTop;

ta.value=ta.value.slice(0,firstPos)+text1+ta.value.slice(firstPos);
ta.value=ta.value.slice(0,secondPos)+text2+ta.value.slice(secondPos);

ta.selectionStart=firstPos+text1.length;
ta.selectionEnd=secondPos;
ta.focus();
ta.scrollTop=contenuScrollTop;
} else { // Opera
var sel=document.hop.contenu;
var instances=countInstances(text1,text2);
if (instances%2 !=0 && text2 !="" ) sel.value=sel.value + text2;
else sel.value=sel.value + text1;
}
}

pour ajouter un smiley en plus voici le code html + onclick :

<img src="smiley.gif" alt="smiley" title=":smiley:" onclick="putSmiley(this.title,this.src)" />
<!-- ***ATTENTION*** le title est très important, car c'est le contenu du title qui sera injecté dans le corp de texte, soit le title correspond au symbole du smiley, dans l'exemple, en cliqant sur le smiley, c'est :smiley: qui sera mit dans le corp de texte et non juste le texte entre les ::, je vous conseille de les laisser, car plus facile pour la gestion php après -->

voici aussi un exemple de traitement par php du message final, ressorti avec les smileys :

$message = $_POST['message'];

function smileys($message) {
$in=array(
":arrow:",
":biggrin:",
":confused:"
);
$out=array(
'<img src="./css-js/images/smileys/arrow.gif" />',
'<img src="./css-js/images/smileys/biggrin.gif" />',
'<img src="./css-js/images/smileys/confused.gif" />'
);
return str_replace($in,$out,$message);
}
$message = smileys($message);

voilà, je pense que j'ai tout dit, j'espère que ça en aidera plus d'un, car j'ai moi même galéré avec ça, et ne trouvant pas de réponse sur internet, je me suis débrouillé tout seul pour trouver une solution viable.

PS: la fonction JavaScript, est tirée de phpBB que j'ai adapté à mon cas de figure, je pense que cette solution sera adapté à os situation.
0