Fonction de smiley sur un texte PHP

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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 ? :(

1 réponse

  1. jean448 Messages postés 1543 Statut Membre 240
     
    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
    1. jean448 Messages postés 1543 Statut Membre 240
       
      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
    2. Utilisateur anonyme
       
      Beaucoup trop compliqué pour ce que je veux, et il y a plein de code avec des trucs qui n'ont aucun rapport...
      0
    3. Utilisateur anonyme
       
      J'ai trouvé. Merci quand même.

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