Fonction de smiley sur un texte PHP

Résolu/Fermé
Utilisateur anonyme - 21 déc. 2013 à 16:54
 Utilisateur anonyme - 22 déc. 2013 à 09:06
Bonjour,


J'ai un code qui m'avait l'air de fonctionner mais finalement ne fonctionne qu'une fois sur deux.. Je m'explique : j'ai un champs texte ainsi que des images de smiley et ce que je veux c'est que quand je clique sur l'image, il y ai du genre ";)" qui se mette dans le champs texte.

Cela fonctionne quand je clique sur les smiley au début, mais une fois que j'ai écris dans le champs texte, les smiley ne se mettent plus.

Mes codes :

La page concernée :
<img alt="sourire" src="../images/emoticones/sourire.gif" onClick="ajouter(':D');" />

<textarea id="texte" name="texte" rows="1" COLS="60"></textarea>


Le javascript :

<script type="text/javascript">

function ajouter(smiley)
{
document.getElementById("texte").innerHTML += smiley;
}

</script>

Qu'est-ce qui ne va pas ? :(
A voir également:

1 réponse

jean448 Messages postés 1331 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 26 janvier 2017 237
21 déc. 2013 à 17:32
Salut

Dans ton head

<script>
function insertTag(startTag, endTag, textareaId, tagType) {
var field = document.getElementById(textareaId);
var scroll = field.scrollTop;
field.focus();

/* === Partie 1 : on récupère la sélection === */
if (window.ActiveXObject) {
var textRange = document.selection.createRange();
var currentSelection = textRange.text;
} else {
var startSelection = field.value.substring(0, field.selectionStart);
var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
var endSelection = field.value.substring(field.selectionEnd);
}

/* === Partie 2 : on analyse le tagType === */
if (tagType) {
switch (tagType) {
case "lien":
endTag = "</lien>";
if (currentSelection) { // Il y a une sélection
if (currentSelection.indexOf("http://") == 0 || currentSelection.indexOf("https://") == 0 || currentSelection.indexOf("ftp://") == 0 || currentSelection.indexOf("www.") == 0) {
// La sélection semble être un lien. On demande alors le libellé
var label = prompt("Quel est le libellé du lien ?") || "";
startTag = "<lien url=\"" + currentSelection + "\">";
currentSelection = label;
} else {
// La sélection n'est pas un lien, donc c'est le libelle. On demande alors l'URL
var URL = prompt("Quelle est l'url ?");
startTag = "<lien url=\"" + URL + "\">";
}
} else { // Pas de sélection, donc on demande l'URL et le libelle
var URL = prompt("Quelle est l'url ?") || "";
var label = prompt("Quel est le libellé du lien ?") || "";
startTag = "<lien url=\"" + URL + "\">";
currentSelection = label;
}
break;
case "citation":
endTag = "</citation>";
if (currentSelection) { // Il y a une sélection
if (currentSelection.length > 30) { // La longueur de la sélection est plus grande que 30. C'est certainement la citation, le pseudo fait rarement 20 caractères
var auteur = prompt("Quel est l'auteur de la citation ?") || "";
startTag = "<citation nom=\"" + auteur + "\">";
} else { // On a l'Auteur, on demande la citation
var citation = prompt("Quelle est la citation ?") || "";
startTag = "<citation nom=\"" + currentSelection + "\">";
currentSelection = citation;
}
} else { // Pas de selection, donc on demande l'Auteur et la Citation
var auteur = prompt("Quel est l'auteur de la citation ?") || "";
var citation = prompt("Quelle est la citation ?") || "";
startTag = "<citation nom=\"" + auteur + "\">";
currentSelection = citation;
}
break;
}
}

/* === Partie 3 : on insère le tout === */
if (window.ActiveXObject) {
textRange.text = startTag + currentSelection + endTag;
textRange.moveStart("character", -endTag.length - currentSelection.length);
textRange.moveEnd("character", -endTag.length);
textRange.select();
} else {
field.value = startSelection + startTag + currentSelection + endTag + endSelection;
field.focus();
field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
}

field.scrollTop = scroll;
}
</script>

2
jean448 Messages postés 1331 Date d'inscription mardi 29 décembre 2009 Statut Membre Dernière intervention 26 janvier 2017 237
21 déc. 2013 à 17:36
Puis un textearea ou le texte va être mis

<textarea id="textarea" name="" ></textarea>

puis l'input qu'il faut cliquer pour que le texte apparaisse

<input type="button" value="Smiley" onclick="insertTag(':)','textarea');"/>
0
Utilisateur anonyme
21 déc. 2013 à 20:44
Beaucoup trop compliqué pour ce que je veux, et il y a plein de code avec des trucs qui n'ont aucun rapport...
0
Utilisateur anonyme
22 déc. 2013 à 09:06
J'ai trouvé. Merci quand même.

PS : si quelqu'un cherche et tombe ici, il faut utiliser javascript:document.getElementById('texte').value += ':)'
0