Bloquer une partie d'un texte [textarea]

Petit nouveau ! | 4 Messages

25 mars 2008, 13:16

Bonjour à tous,

Voila je voudrais savoir comment faire pour bloquer une partie d'un texte dans un textarea, je m'explique:

J'ai un textarea qui commence automatiquement par : "TOUS :" (sans les guillemets biensur .. ;-))

Et je voudrais que celui qui consultera ne puisse pas effacer ce mot, et qu'il puisse donc commencer à écrire après : TOUS :

Quel est la méthode en javascript pour bloquer cette partie du texte ?

Merci d'avance.

Invité
Invité n'ayant pas de compte PHPfrance

25 mars 2008, 13:20

aucune idée en js mais

tu peux par contre ecrire ton "tous" en image et le placer en background dans le textarea, et mettre une marge adequate..

si ca peut t aider :D

Mammouth du PHP | 19672 Messages

25 mars 2008, 14:44

Non, l'image n'est pas une solution. Il faut utiliser un gestionnaire d'évènements onkeyup dans le textarea et avoir une fonction qui va faire deux choses :
-1- vérifier que le "TOUS :" débute ou non le texte de cette zone;
-2- S'il ne trouve pas cette chaine le rajouter et remettre le texte saisi en place.

Pour ça, tu dois te créer une petite fonction qui va récupérer dans un premier temps le contenu du textarea. Ta balise <form> doit avoir un attribut "id" avec une valeur dedans et pareil pour la balise textarea pour que l'exemple qui suit fonctionne.
/**
 * Fonction de traitement du textarea
 */
function textareaTous()
{
    /* -1- on récupère l'objet formulaire */
    var oForm    = document.forms.idDeLaBaliseForm; // remplacer "idDeLaBaliseForm" par l'id de ta balise <form>
    /* -2- on récupère l'objet textarea */
    var oTxtarea = oForm.elements.idDuTextarea; // remplacer "idDuTextarea" par l'id de la balise <textarea>
    /* -3- on récupère le contenu du textarea */
    var contenu  = oTxtarea.value;

    // création d'une expression régulière qui va permettre de trouver "TOUS :"
    if(!contenu.match(/^(TOUS :)/))
    {
        oTxtarea.value = 'TOUS : '+ contenu;
    }
}
Dans la fonction, il n'y a pas de else parce que si on trouve l'occurence de 'TOUS :', il est inutile de changer quoique ce soit.

À partir de là, tu ajoutes dans ta balise <textarea> ce gestionnaire d'évènement :

Code : Tout sélectionner

<textarea cols="20" rows="5" id="idDuTextarea" onkeyup="textareaTous();"></textarea>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 4 Messages

25 mars 2008, 15:03

Merci de ta réponse, je n'attendais pas du code déjà maché mais juste la méthode, néanmoins un grand merci pour t'être donné la peine.

Problème résolu !

Mammouth du PHP | 19672 Messages

25 mars 2008, 15:25

Problème résolu !
Alors clique donc sur le bouton prévu à cet effet en haut de cette page, si tu es identifié, tu vas le voir juste au dessus du sujet de départ. ;)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: