[javascript] une fonction appliqué à TOUS mes text-area

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

2fou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 223
Inscription: Lun Juil 07, 2003 23:50

[javascript] une fonction appliqué à TOUS mes text-area

Message le Lun Avr 24, 2006 15:31

Salut,
pour la partie admin d'un site, j'ai intégré des boutons gras, italique et lien permettant au client de mettre en forme le texte.
Par exemple, gràce à un script (javascript) quand on clique sur le bouton "gras" après avoir selectionné du texte à l'interieur de la zone de texte (textarea) p1 du formulaire (intitulé "modif")...les balises <gras> et <gras> sont intégré avant et après le texte choisis dans le textarea. Puis on valide le formulaire, mon texte est intégré avec les balises <gras> dans la bdd et ce n'est qu-à l'affichage, ou je remplace (par un script php) les balises <gras> en <strong>.

Mon problème concerne l'ajout des balises personalisées
Pour cela, j'avais trouvé un script (javascript) : voir plus bas.
Or celui-ci ne me permet de modifier seulement le text-area intitulé p1.
Or je souhaiterai pouvoir traiter plusieurs text-area.
Comment faire pour que cette fonction javascript s'applique à tous mes text-areas?

Merci.


le script :
Code: Tout sélectionner
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
var regexp = new RegExp("[\r]","gi");

function storeCaret(selec)
{
   if (isMozilla)
   {
   // Si on est sur Mozilla

      oField = document.forms['modif'].elements['p1]'];

      objectValue = oField.value;

      deb = oField.selectionStart;
      fin = oField.selectionEnd;

      objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
      objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
      objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );

   //   alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
         
      oField.value = objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">" + objectValueFin;
      oField.selectionStart = strlen(objectValueDeb);
      oField.selectionEnd = strlen(objectValueDeb + "<" + selec + ">" + objectSelected + "</" + selec + ">");
      oField.focus();
      oField.setSelectionRange(
         objectValueDeb.length + selec.length + 2,
         objectValueDeb.length + selec.length + 2);
   }
   else
   {
   // Si on est sur IE
      
      oField = document.forms['modif'].elements['p1'];
      var str = document.selection.createRange().text;

      if (str.length>0)
      {
      // Si on a selectionné du texte
         var sel = document.selection.createRange();
         sel.text = "<" + selec + ">" + str + "</" + selec + ">";
         sel.collapse();
         sel.select();
      }
      else
      {
         oField.focus(oField.caretPos);
      //   alert(oField.caretPos+"\n"+oField.value.length+"\n")
         oField.focus(oField.value.length);
         oField.caretPos = document.selection.createRange().duplicate();
         
         var bidon = "%~%";
         var orig = oField.value;
         oField.caretPos.text = bidon;
         var i = oField.value.search(bidon);
         oField.value = orig.substr(0,i) + "<" + selec + "></" + selec + ">" + orig.substr(i, oField.value.length);
         var r = 0;
         for(n = 0; n < i; n++)
         {if(regexp.test(oField.value.substr(n,2)) == true){r++;}};
         pos = i + 2 + selec.length - r;
   
         var r = oField.createTextRange();
         r.moveStart('character', pos);
         r.collapse();
         r.select();

      }
   }
}

Dernière édition par 2fou le Lun Avr 24, 2006 16:19, édité 1 fois.


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8090
Inscription: Mer Fév 22, 2006 18:24

Message le Lun Avr 24, 2006 15:37

Il y a des solutions parfaitement cross-browser, tu sais ?
Comme celle-ci

Toutou-Fr
WRInaute passionné
WRInaute passionné
 
Messages: 642
Inscription: Lun Aoû 22, 2005 14:49

Message le Lun Avr 24, 2006 16:04

je ne suis pas spécialiste javascript mais une simple mise en variable du nom du champ devrait suffir :

function storeCaret(selec,champ_a_modifier)
{


et remplacement des lignes :
oField = document.forms['modif'].elements['p1'];

en :
oField = document.forms['modif'].elements[''+champ_a_modifier+''];

2fou
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 223
Inscription: Lun Juil 07, 2003 23:50

Message le Lun Avr 24, 2006 16:23

ok mais comment je défini que ma fonction s'applique aux <textarea> ?


Szarah, Merci pour le lien, ça a l'air sympa mais je ne pesne pas que ça aille pour ce projet là.


Szarah
WRInaute accro
WRInaute accro
 
Messages: 8090
Inscription: Mer Fév 22, 2006 18:24

Message le Lun Avr 24, 2006 16:52

>> 2fou

Tu as raison, 2fou, ton souci est autre part et je n'avais pas bien lu ta question.
Mais pour une autre fois, c'est un bon code.


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

Consultez la description détaillée des produits ou services de Google suivants : Google Related Links

  • Stratégies de mots-clés
    Cet outil vous permet de créer à partir de quelques mots-clés une liste d'expressions constituées des mots pris dans tous les ordres possibles. Il sert aux analyses de positionnement et achats de mots-clés.
  • Analyse des backlinks
    Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées.


Qui est en ligne

Utilisateurs parcourant ce forum: Rod la Kox et 0 invités